Bonjour,
Quelle serait la solution pour recopier sans doublons des dates issues de plusieurs feuilles ?
Pour chaque feuille les dates sont dans une même colonne.
D'avance merci pour votre aide.
Bien à vous,
Sylvain
Bonjour,
Quelle serait la solution pour recopier sans doublons des dates issues de plusieurs feuilles ?
Pour chaque feuille les dates sont dans une même colonne.
D'avance merci pour votre aide.
Bien à vous,
Sylvain
Bonsoir,
votre demande est d'une rare imprécision. Vous aurez du mal à obtenir des réponses.Quelle serait la solution pour recopier sans doublons des dates issues de plusieurs feuilles ?
Pour chaque feuille les dates sont dans une même colonne.
Cordialement![]()
Bonsoir,
Vraiment désolé, j'essaie donc d'être plus précis en prenant un exemple simple, enfin j'espère.
Feuil1 et colonne A une série de dates.
Feuil2 et colonne A également une série de dates, qui peuvent être les mêmes que dans la feuil1
Je souhaiterai donc que puisse être recopiées sans doublons les dates des colonnes A contenues dans les Feuil1 et 2 dans colonne A de la Feuil3.
Sylvain








Bonsoir,
Tu devrais avoir la solution sur cette page : boisgontierjacques
Bonsoir,
Merci pour cette solution.
Je ne maîtrise pas le VBA et si j'ai bien compris le code proposé dans cette solution ne tient compte que d'une seule colonne d’une seule feuille.
Sylvain
Bonjour,
Si tu ne maîtrises pas VBA, il faut faire au plus simple.
Connais-tu l'enregistreur de macro ? Si non => à lire : https://fauconnier.developpez.com/tu...istreur-macro/
Avant de parler VBA, réfléchissons à comment tu ferais "à la main" sur Excel.
- Copier la colonne A de la Feuil1 dans la colonne 2 de la Feuil3
- Copier la colonne A de la Feuil2 dans la colonne 2 de la Feuil3 à la suite des données de la Feuil1
- Sélectionner la colonne A de la Feuil3 et supprimer les doublons (Données > Outils de données > Supprimer les doublons)
Donc la 1ère chose que tu dois faire (après avoir lu le tuto sur l'enregistreur de macro), c'est trouver le code des opérations ci-dessus à partir de l'enregistreur de macro.
Une fois que tu as fait ceci, il faut adapter le code que te donne l'enregistreur de macro.
A mon avis, à ce moment là la plus grosse difficulté sera de trouver la première ligne vide de ta colonne A en Feuil3 pour pouvoir y coller les données de la Feuil2. Pour cela il faut utiliser la fonction End.
correspond à la dernière ligne remplie de la colonne A.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("A1").End(xlDown)
Donc si tu veux la ligne en-dessous, il faut utiliser Offset qui permet de se décaler d'une ou plusieur cellules :
Essaie déjà de bidouiller qqc avec toutes ces infos et reviens vers nous quand tu as quelque chose => écris-nous ton code (avec les balises codes : # sur la console) et dis-nous ce qui va/ ne va pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim premiereCelluleVide As Range Set premiereCelluleVide = Range("A1").End(xlDown).Offset(1,0) 'on se décale d'une ligne vers le bas (+1), mais pas d'une colonne (0)
A bientôt![]()








Bonsoir,
Tu as bien compris et il faut adapter comme ceci par exemple :
La procédure "cre_dic" enregistre la feuille passée en paramètre et tu peux ainsi regrouper autant de feuilles que tu veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Option Explicit Dim dic As Object Sub ListeSansDoublons() Set dic = CreateObject("Scripting.Dictionary") cre_dic ("Feuil1") cre_dic ("Feuil2") Sheets("Feuil3").Range("A1").Resize(dic.Count, 1) = Application.Transpose(dic.keys) End Sub Public Sub cre_dic(feu) ' feuille colonne A en mémoire Dim bdd, idx As Long With Sheets(feu) bdd = .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row) ' sélection feuille en mémoire For idx = LBound(bdd) To UBound(bdd) dic(bdd(idx, 1)) = "" Next idx End With End Sub
Il faut bien sûr adapter les noms des feuilles si tes noms sont différents.
Il est bien évident que tu peux aussi utiliser la solution de riaolle que je salue et qui est sans doute plus pédagogique pour un débutant.
Partager