Macro : Récup liste sans doublons de deux feuilles
Résolu
James
-
J@mes Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
J@mes Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Après avoir passé plusieurs heures de recherches infructueuses, je me décide à poster.
Environnement: Office 2013 (si possible il faudrait que ce soit lisible sur du 2003)
Explication du fichier et de mon besoin :
J'ai une feuille nommé xxx
Cette feuille est une extraction d'un soft.
Elle est amené à être de plus en plus longue (1884 lignes pour le moment)
Une seconde feuille nommé yyy
Cette feuille est mis à jours régulièrement à la main.
Elle est ammené à être de plus en plus longue (2036 lignes pour le moment)
La troisième feuille nommé liste zzz
Je dois récupérer l'ensemble de la colonne A de xxx et l'ensemble de la colonne A de yyy mais sans doublon.
Autre particularité, il y a des cellules vides dans yyy
Avec des fonctions je n'y arrive pas, surement via une macro mais je ne m'y connais pas du tout, mis à part les enregistrements de manipulation simple ...
-----
Autre info
Dans la feuille liste zzz je récupère des informations des deux autres feuilles via des recherchev.
En colonne B
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;5;FAUX)
En colonne C
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;2;FAUX)
En colonne D
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;3;FAUX)
En colonne E
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;4;FAUX)
En colonne F
=RECHERCHEV(A2;xxx!$A$4:$AQ$1769;10;FAUX)
En colonne G
=RECHERCHEV(A8;xxx!$A$4:$AQ$1769;3;FAUX)
...
jusqu'en colone O
Donc il est important de ne modifier que la colonne A de Liste zzz pour que le reste se mette à jours.
Si vous avez des recommandations de modification sur cela je suis preneur.
Merci d'avance
Cordialement
Edition :
Ajout d'une pièce jointe afin d'avoir un visuel c'est toujours plus simple :
http://cjoint.com/?3GjoVZSI6qZ
C'est la partie en rouge du premier tableau qui me pose problème.
Hésitez pas si vous avez des questions ou remarques.
Encore merci :)
Après avoir passé plusieurs heures de recherches infructueuses, je me décide à poster.
Environnement: Office 2013 (si possible il faudrait que ce soit lisible sur du 2003)
Explication du fichier et de mon besoin :
J'ai une feuille nommé xxx
Cette feuille est une extraction d'un soft.
Elle est amené à être de plus en plus longue (1884 lignes pour le moment)
Une seconde feuille nommé yyy
Cette feuille est mis à jours régulièrement à la main.
Elle est ammené à être de plus en plus longue (2036 lignes pour le moment)
La troisième feuille nommé liste zzz
Je dois récupérer l'ensemble de la colonne A de xxx et l'ensemble de la colonne A de yyy mais sans doublon.
Autre particularité, il y a des cellules vides dans yyy
Avec des fonctions je n'y arrive pas, surement via une macro mais je ne m'y connais pas du tout, mis à part les enregistrements de manipulation simple ...
-----
Autre info
Dans la feuille liste zzz je récupère des informations des deux autres feuilles via des recherchev.
En colonne B
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;5;FAUX)
En colonne C
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;2;FAUX)
En colonne D
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;3;FAUX)
En colonne E
=RECHERCHEV(A2;'yyy'!$A$1:$R$2036;4;FAUX)
En colonne F
=RECHERCHEV(A2;xxx!$A$4:$AQ$1769;10;FAUX)
En colonne G
=RECHERCHEV(A8;xxx!$A$4:$AQ$1769;3;FAUX)
...
jusqu'en colone O
Donc il est important de ne modifier que la colonne A de Liste zzz pour que le reste se mette à jours.
Si vous avez des recommandations de modification sur cela je suis preneur.
Merci d'avance
Cordialement
Edition :
Ajout d'une pièce jointe afin d'avoir un visuel c'est toujours plus simple :
http://cjoint.com/?3GjoVZSI6qZ
C'est la partie en rouge du premier tableau qui me pose problème.
Hésitez pas si vous avez des questions ou remarques.
Encore merci :)
A voir également:
- Voici la liste sans les doublons
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
7 réponses
Bonjour,
Essayes ce fichier, ça devrait faire l'affaire :
http://cjoint.com/?0GrpjgztQg4
La Macro se trouve en feuille3 dans le VBA editor.
N'hésites pas si tu as des question ?
Bonne journée
Essayes ce fichier, ça devrait faire l'affaire :
http://cjoint.com/?0GrpjgztQg4
La Macro se trouve en feuille3 dans le VBA editor.
N'hésites pas si tu as des question ?
Bonne journée
Je me permet une petite relance.
Es qu'il manque quelque chose ? Un détail ou autre ?
Par avance merci
Es qu'il manque quelque chose ? Un détail ou autre ?
Par avance merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pas besoin de macro ...
Alors ton 1er problème vient du faite que lorsque tu utilises RECHERCHEV(A1 dans une cellule de ZZZ, ton A1 pointe sur une cellule vide, il devrait aller pointer sur une cellule de la feuille XXX... mais du coup il y a une petite astuce ... j'ai vu ca en partant de ton fichier ...
pour récap de manière propre dans ta feuille ZZZ
Colonne A =RECHERCHEV(xxx!A2;yyy!$A$2:$R$2036;1;FAUX) => démarre bien en A2 car tes lignes en 1 sont des titres ...
Colonne B =RECHERCHEV(xxx!A2;yyy!$A$2:$R$2036;5;FAUX)
etc pour tes autres colonnes ...
Ensuite selectionne ta colonne A, puis fait Accueil/Mise en forme conditionnel/regle de mise en surbrillance / doublon ...
Tes cellules seront colorés lorsqu'elles sont en doublons ...
Selectione ntoutes tes colonnes utiles et fait FILTRE ... comme ca ensuite sur ta colonne A, il reste à faire un tri dessus sur la couleur, et elles seront regroupés, tu pourras alors supprimer à la main tes doublons.
NB: lorsque j'utilise la fonction rechercheV de manière ponctuelle, je recopie mes résultats avec COPIER/VALEUR ... comme ca je peux supprimer par ex les autres feuilles :)
Alors ton 1er problème vient du faite que lorsque tu utilises RECHERCHEV(A1 dans une cellule de ZZZ, ton A1 pointe sur une cellule vide, il devrait aller pointer sur une cellule de la feuille XXX... mais du coup il y a une petite astuce ... j'ai vu ca en partant de ton fichier ...
pour récap de manière propre dans ta feuille ZZZ
Colonne A =RECHERCHEV(xxx!A2;yyy!$A$2:$R$2036;1;FAUX) => démarre bien en A2 car tes lignes en 1 sont des titres ...
Colonne B =RECHERCHEV(xxx!A2;yyy!$A$2:$R$2036;5;FAUX)
etc pour tes autres colonnes ...
Ensuite selectionne ta colonne A, puis fait Accueil/Mise en forme conditionnel/regle de mise en surbrillance / doublon ...
Tes cellules seront colorés lorsqu'elles sont en doublons ...
Selectione ntoutes tes colonnes utiles et fait FILTRE ... comme ca ensuite sur ta colonne A, il reste à faire un tri dessus sur la couleur, et elles seront regroupés, tu pourras alors supprimer à la main tes doublons.
NB: lorsque j'utilise la fonction rechercheV de manière ponctuelle, je recopie mes résultats avec COPIER/VALEUR ... comme ca je peux supprimer par ex les autres feuilles :)
Bonjour Clic85,
Navré je n'avais pas vue ta réponse,
Je viens d'essayer les fonctions que tu me propose,
Ta première fonction récupère les doublons de xxx et yyy mais pas le reste.
Sur les feuilles xxx et yyy à la ligne 7 il y a bien deux noms différents justement pour pouvoir les récupérer.
Du coup là si il y a doublon c'est qu'il y a un doublon sur xxx et yyy.
En tout cas merci car ca me permet de peaufiner mes fonctions, en soit je ne pense pas que ca pose problème de commencer en A1 mais je vais suivre ton conseil en effet c'est bien plus logique et merci :)
De même pour les doublons en effet j'avais zapé la mise en forme conditionnelle qui dans ce cas m'arrange bien.
Merci clic85 pour ces informations mais il reste toujours ce problème de récupérer la colonne A de xxx et yyy dans liste zzz
Navré je n'avais pas vue ta réponse,
Je viens d'essayer les fonctions que tu me propose,
Ta première fonction récupère les doublons de xxx et yyy mais pas le reste.
Sur les feuilles xxx et yyy à la ligne 7 il y a bien deux noms différents justement pour pouvoir les récupérer.
Du coup là si il y a doublon c'est qu'il y a un doublon sur xxx et yyy.
En tout cas merci car ca me permet de peaufiner mes fonctions, en soit je ne pense pas que ca pose problème de commencer en A1 mais je vais suivre ton conseil en effet c'est bien plus logique et merci :)
De même pour les doublons en effet j'avais zapé la mise en forme conditionnelle qui dans ce cas m'arrange bien.
Merci clic85 pour ces informations mais il reste toujours ce problème de récupérer la colonne A de xxx et yyy dans liste zzz
Bonjour,
Mon code (qui n'est pas vraiment le mien) marche très bien, je m'en sers pour créer une liste à partir d'une colonne que des utilisateurs remplissent progressivement et la formule en extrait les valeurs sans doublon et sans espace.
PS; excel 2007 pour ma part
Après si je n'ai pas compris sa demande c'est autre chose..
--
Mon code (qui n'est pas vraiment le mien) marche très bien, je m'en sers pour créer une liste à partir d'une colonne que des utilisateurs remplissent progressivement et la formule en extrait les valeurs sans doublon et sans espace.
PS; excel 2007 pour ma part
Après si je n'ai pas compris sa demande c'est autre chose..
--
Tu vas devoir utiliser les Macros VBA !!
Voici le code à faire pour extraire d'une colonne donnée une liste sans doublon et espaces vides supprimés :
Dans ce code, la colonne source est "b" alors que la colonne de destination est "c" :
Dans ton cas précis, si tu dois prendre les colonnes xxx-A:A et yyy-A:A et pour les réunir dans zzz-A:A et zzz-B:B (par exemple), alors tu vas devoir d'abord définir une plage de destination pour la macro ("c" dans le code) dans la MEME feuille, à savoir xxx pour la première fois et yyy la seconde.
Une fois que tu as affecté à un bouton (qui lui peut être dans zzz) aux deux macros, il te suffit en zzz de mettre en colonne (en A:A et B:B dans la logique de notre exemple) les références aux colonnes de destination que tu auras choisies.
En espérant que ça marche ;)
Voici le code à faire pour extraire d'une colonne donnée une liste sans doublon et espaces vides supprimés :
Dans ce code, la colonne source est "b" alors que la colonne de destination est "c" :
Sub ListeSansDoublons() Application.ScreenUpdating = False With Range("c1:c9000") .ClearContents .Interior.ColorIndex = xlNone End With Set mondico = CreateObject("Scripting.Dictionary") b = Range("b1", [b65000].End(xlUp)).Value For Each c In b mondico(c) = "" Next c [x2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys) End Sub
Dans ton cas précis, si tu dois prendre les colonnes xxx-A:A et yyy-A:A et pour les réunir dans zzz-A:A et zzz-B:B (par exemple), alors tu vas devoir d'abord définir une plage de destination pour la macro ("c" dans le code) dans la MEME feuille, à savoir xxx pour la première fois et yyy la seconde.
Une fois que tu as affecté à un bouton (qui lui peut être dans zzz) aux deux macros, il te suffit en zzz de mettre en colonne (en A:A et B:B dans la logique de notre exemple) les références aux colonnes de destination que tu auras choisies.
En espérant que ça marche ;)
Merci Theor.R de ta réponse,
Alors en effet je doute (sans l'avoir testé pour le moment) que cela ne marche.
Je dois copier (non couper) XXX-A:A et yyy-A:A pour les réunir dans zzz-A:A dans la colonne B j'ai déjà des valeurs.
Si je dois modifier mon tableau en ajoutant des colonnes ce n'est pas un problème je pourrais toujours cacher les colonnes qui n'ont pas besoin d'être vue.
J'ai l'impression que ce n'est pas si simple.
Merci en tout cas de votre aide :)
Alors en effet je doute (sans l'avoir testé pour le moment) que cela ne marche.
Je dois copier (non couper) XXX-A:A et yyy-A:A pour les réunir dans zzz-A:A dans la colonne B j'ai déjà des valeurs.
Si je dois modifier mon tableau en ajoutant des colonnes ce n'est pas un problème je pourrais toujours cacher les colonnes qui n'ont pas besoin d'être vue.
J'ai l'impression que ce n'est pas si simple.
Merci en tout cas de votre aide :)
j'avais oublié de modifier une variable dans mon code (à savoir [x2] en [c2]), pas étonnant s'il ne marchait alors pas ! Voici la version corrigée qui devrait marcher (c'est en tout cas ok sur mon tableur).
Sub ListeSansDoublons() Application.ScreenUpdating = False With Range("c1:c9000") .ClearContents .Interior.ColorIndex = xlNone End With Set mondico = CreateObject("Scripting.Dictionary") b = Range("b1", [b65000].End(xlUp)).Value For Each c In b mondico(c) = "" Next c [c2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys) End Sub
Je te remercie Theo.R,
Mais j'ai aucune notions en VBA.
De ce que je comprends tu fais appel a une colonne C et B mais il n'y a aucune donnée a rechercher sur ces colonnes.
J'ai essayé de présenter un exemple en pièce jointe avec mon besoin afin qu'il soit "imagé" et que cela facilite la compréhension de mon problème.
Mais j'ai aucune notions en VBA.
De ce que je comprends tu fais appel a une colonne C et B mais il n'y a aucune donnée a rechercher sur ces colonnes.
J'ai essayé de présenter un exemple en pièce jointe avec mon besoin afin qu'il soit "imagé" et que cela facilite la compréhension de mon problème.
Ok j'ai pris ton doc et ai mis deux fois le code que je t'ai donné en adaptant les colonnes (il fallait comprendre que mon C et B sont à adapter comme je l'avais dit).
Le doc :
https://www.cjoint.com/?DGqpst4kxJ
Par contre je n'ai pas saisi où afficher les deux listes en zzz, je te laisse cette dernière étape maintenant que tu as les listes sans doublon.
P.S: VBA n'est pas compliqué à ce niveau, si dans le code tu remplaces les "c" par des "a" pour désigner les colonnes, alors la macro va faire la même opération mais sur les "a" et non plus les "c".
Le doc :
https://www.cjoint.com/?DGqpst4kxJ
Par contre je n'ai pas saisi où afficher les deux listes en zzz, je te laisse cette dernière étape maintenant que tu as les listes sans doublon.
P.S: VBA n'est pas compliqué à ce niveau, si dans le code tu remplaces les "c" par des "a" pour désigner les colonnes, alors la macro va faire la même opération mais sur les "a" et non plus les "c".