begin process at 2012 02 14 00:00:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Recherche par plage de données - excel vba


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche par plage de données - excel vba

jeudi 18 juin 2009 à 12:13:58 | Recherche par plage de données - excel vba

Djrome

Salut les Kracks,

J'ai des données dans une liste déroulante en colonne (O10:O) ce chacune de mes feuilles, données qui correspond aux noms "exact" de mes feuilles.
Souvent il n'y a aucune information (cellule vide)
Mais lorsqu'il y a une donnée, je souhaiterai obtenir une copie de la ligne entière et qu'elle aille se reloger dans la feuille portant le même nom:
Pour expliquer le but de la manoeuvre, chacun des départements investiguent sur chacunes des lignes correspondant à un Item spécifique, mais parfois il n'est pas pour eux. En investiguant, ils arrivent définir que c'est pour un autre département. Aussi, il me l'indique en colonne O par le biai d'une liste déroulante permettant d'avoir toujours les mêmes données.
FYI:  le menu déroulant est obtenue avec Data/Validation/list/...
J'ai nommé cette liste Listsec et elle contient une vingtaine de choix possible (donc vingt feuilles également), mais, souvent il n'y a pas de donnée du tout 'si le travail a bien été fait, ce qui complique.
Ci-dessous mes idées pour y parvenir:

Sub Distribution
Dim c as variant
Dim O as variant
Dim Listsec as variantPlage de données comportant tous les noms des feuilles et le menu déroulant en colonne O
O = Range("O10:O & Range("h6").value + 10)'il y a un count dans h6 qui me donne le nombre exact de ligne de A10: Ax dans lesquels il n'y a aucune ligne vide possible :-(
Dim n as Byte'
For n = 010:0 & range(h6).value+10) Boucle à créer pouvant être limiter par (O10:O & Range("h6").value + 10) évitant de checker toute la colonne
Sheet("Intel 1 ").select' feuille de démarrage, pas de problème
For each c in O                 ' ????
ActiveCell.entirerow.copy
Sheets(c).select                 'problème : comment récupérer la variable c en nom de feuille
Cells(Range("A65536").End(xlUp).Row + 1, 1).Select
ActiveSheet.Paste
Sheet("intel 1").select' feuille de retour pour Next si il y a plusieurs données
Next

Sheet("intel 2").select ' Peut-être possibilité de prendre une variable qui ira choisir les feuilles dans Listsec qui est une plage de données comportant tous les noms de feuilles
For each c in O                 ' ????
ActiveCell.entirerow.copy
Sheets(c).select                 'problème : comment récupérer la variable c en nom de feuille
Cells(Range("A65536").End(xlUp).Row + 1, 1).Select
ActiveSheet.Paste
Sheet("intel 2").select
Next
 'etc....
End Sub

Vous comprenez que si il n'y a aucune donnée en colonne O10:0 & range("H6").value +10 il faut passer à une autre feuille

D'avance merci pour votre éclaircissement

Douraka outchit, chto mièrvavo litchit .
jeudi 18 juin 2009 à 13:41:18 | Re : Recherche par plage de données - excel vba

bigfish_le vrai

Membre Club
Salut,

Sub Distribution
Dim c as Range
Dim O as Range
With Sheet("Intel 1 ")  ' attention tu as mis un espace apres le 1 du nom de la feuille
   set O = .Range("O10:O" & Range("h6").value + 10)
End With
For each c in O
   If Not c.value = "" then
      With Sheets(c.Value)
         c.entirerow.copy Destination:= .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
      End With
   End if
Next

May be something like that ...


jeudi 18 juin 2009 à 16:08:50 | Re : Recherche par plage de données - excel vba

Djrome

Salut bigfish_le vrai, ça faisait longtemps...(mais t'es une valeur sûr!)

Merci, effectivement elle marche super bien, mais comme je suis exigeant et surtout "faignant", j'aurai souhaité intégrer également un automatisme pour les onglets, défini par ListSec (une plage de données dans une feuille de contrôle).

Pour te donner ma pensée:
With each Sheet(dansmaplageListSec) 
' et puis ta procédure qui fonctionne bien
J'attire ton attention sur le fait qu'il puisse y avoir une boucle sans fin (bug) du fait que si je bouge de la feuille1 vers la feuille2 correspondant à la valeur de la cellule en O, une fois que la macro passera sur la feuille2 elle va devoir prendre la valeur dans O qui correspond à elle même, et donc continuer à se copier dessus indéfiniment (65536-10)  :-(
Il faudrait donc également trouver un système expliquant que si la valeur dans colonne O = au nom de la Sheet passer à la suivante...

J'espère t'être assez compréhensible et te remercie encore et d'avance

Douraka outchit, chto mièrvavo litchit .


With Sheet("Intel 1 ")  ' attention tu as mis un espace apres le 1 du nom de la feuille ''''Merci
lundi 22 juin 2009 à 10:26:18 | Re : Recherche par plage de données - excel vba

bigfish_le vrai

Membre Club
Salut,

tu en es ou ?

A+
lundi 22 juin 2009 à 10:55:16 | Re : Recherche par plage de données - excel vba

Djrome



Salut, La distribution se fait sans problème, mais comme je l'explique plus haut, il faut passer ensuite aux autres onglets et faire la même chose. Cependant, il me faudrait afin d'éviter les boucles, une formule me disant que si le message en colonne O est égale au nom de la feuille, ne pas en tenir compte et Next... J'ai 28 onglets dispersés dans le file, aussi, j'ai créé une plage de donnée avec les noms des onglets signifiant. Je ne sais pas si tu as une solution du genre: For each nom dans ma plage Selectionner onglet portant le même nom... Même à écrire c'est difficile alors à traduire en vba... je te laisse faire! D'avance merci (je ne suis pas au boulot aujourd'hui et je ne pourrais donc pas vérifier, mais mercredi je te tiendrai au courant. Cependant, ta première formulation marche super!) Bonne journée Douraka outchit, chto mièrvavo litchit .
lundi 22 juin 2009 à 11:02:38 | Re : Recherche par plage de données - excel vba

Djrome

Re, Désolé pour la couleur, erreur d'emplacement de ma signature... Pour rectification de mes mauvaises explications, ce n'est pas un c.entirerow.copy Destination:= .Cells(.Range("A65536").End(xlUp).Row + 1, 1) mais un c.entirerow.cut Destination:= .Cells(.Range("A65536").End(xlUp).Row + 1, 1) 'cut Cependant, aurais-tu un moyen permettant de virer la ligne directement car en faisant cut une fois la copie effectuer, en revenant sur la sheet on a une ligne vide, mais moi je ne veux aucun espace entre les lignes contenant le texte. Peut-être as-tu une astuce à ce sujet... @+

Douraka outchit, chto mièrvavo litchit .


Cette discussion est classée dans : feuilles, données, select, range, h6


Répondre à ce message

Sujets en rapport avec ce message

Maj. données VBA [ par Morgan3535 ] Bonjour  Bonjour Débutant j’ai réussi à bricoler une modifier bricoler une macro (recupéré sur le forum) me permettant des réc Saisie de données par formulaire Excel [ par Edouardt ] Bonjour, Je voudrais faire un fichier Contact (13 champs) sous excel avec un onglet "base de données" et un onglet "formulaire". L'idée étnt d'utilis gestion données [ par KWET2501 ] Bonjourje suis débutant dans le sujet et dans le forum d'ailleur, et suis ravis d'y participermon sujet:sur une feuille excel je présente un tableau a Cache Excel [ par Azmo31 ] Bonjour a tous,Bon je vous explique mon problème:J'ai une macro qui fait le tri dans un tableau de données qui me fait le total d'une colonne, puis qu Creation de Chart VBScript, data non continues [ par Arno1111 ] Bonjour, Je souhaite créer par visual basic un tableau dont les données (abscisses et ordonnees) ne sont pas continues (un paquet X1-Y1 et un paquet X [Catégorie modifiée .Net --> VBA] Simplifier une macro mettre une boucle- [ par uspa ] Bonjour, Je débute sur la création et la modification des macros. Soyez donc indulgents avec moi.[^^peur] J'ai enregistré une suite d'actions dans une [Catégorie modifiée VB6 --> VBA] Copier coller tableau, aller à la ligne après [ par dru345 ] Salut à tous. Voila mon pb: On remplit un tableau sur la feuille "Input". On clique sur un bouton et la macro va le copier coller ce tableau dans la [Catégorie modifiée VB6 --> VBA] Macro VBA EXCEL recherche fichier , hyperlink , [ par kwamanji ] bonjour , en compilant plusieurs sources j'ai réussi à créer 2 boutons dont les codes sont si dessous 1 pour recherche de documents dans un répert Amelioration macro excel [ par zebulo80 ] Bonjour, J'ai une macro excel qui copie une plage de cellules d'un classeur A vers un classeur B Workbooks.Open Filename:="C:\Integrate.xlsx" Ap PLEASE HELP ME ! JE SAIS QUE QUELQU'UN SAIT [ par marinette22 ] Développeurs(es) bonjour ! J'ai besoin d'un petit coup de pouce. Je suis une autodidacte en VBA EXCEL. J'utilise l'enregistreur de macro et modifie


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,134 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales