Avec ce code, je parviens à récupéré les données situées en colonne B de la feuille source vers les feuilles de destination en colonne A. Je voudrais en plus récupérer les données des colonnes F et G pour les mettre respectivement en colonnes B et C.
comment se rendre de Paris à Barcelone en passant par Moscou !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionon transfère la colonne B sans doublons en colonne A
je sais que c'est faisable pour les 2 autres colonnes (transfert des données correspondantes, comme les enregistrement d'une table
Je répète donc : exposé clair, précis et complet des tenants et aboutissants nécessaire.
Drôle de logique, qui ferait qu'on ne saurait plus du tout ce qui correspond à quoi !
- dans ton dictionnaire "dico", tu élimines donc les valeurs doublons d'une colonne
- dans ton dictionnaire "dics", tu élimines les doublons de valeurs d'une autre colonne
Sub essai2() Dim bd As Object '(onglet BD) Dim dico As Object '(DICtiOnnaire) Dim dl As Integer '(Dernière Ligne) Dim pl As Range 'PLage) Dim cel As Range '(CELlule) Dim temp As Variant '(tableau TEMPoraire) Dim i As Integer '(Incrément) Dim dics As Object 'DICtionnaireS) Dim o As Object '(Onglet) Dim teo As Variant '(tableau TEmporaire Outils) Dim x As Integer 'variable x Dim y As Integer 'variable y Dim dercol As Integer '(Dernière colonne) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Set bd = Sheets("Consultation") 'définit l'onglet bd Set dico = CreateObject("Scripting.Dictionary") 'définit le dictionnaire dico 'dico.AddItem dl = bd.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A) de l'onglet bd Set pl = bd.Range("B8:B" & dl) 'définit la plage pl For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl dico(cel.Value) = "" 'alimente le dictionnaire dico Next cel 'prochaine cellule de la boucle temp = dico.keys 'récupère le dictionnaire sans doublon dans le tableau temp For i = 0 To UBound(temp) 'boucle 1 : sur toutes les valeurs uniques du tableau temp Set o = Sheets(temp(i)) 'définit l'onglet o o.UsedRange.Clear 'efface les anciennes données o.UsedRange.MergeCells = False bd.Range("A1").AutoFilter 'lance le filtre automatique bd.Range("A1").AutoFilter field:=2, Criteria1:=temp(i) 'filtre automatique sur la colonne 2 (=B) avec la valeur temp(i) comme critère '''ENTETE LIGNE (6) DU TABLEAU''' Set dics = CreateObject("Scripting.Dictionary") 'définit le dictionnaire dics For Each cel In pl.Offset(0, 1).SpecialCells(xlCellTypeVisible) 'boucle 2 : sur toutes les cellules visibles cel de la plage pl déclalée d'un colonne à droite dics(cel.Value) = "" 'alimente le dictionnaire dics Next cel 'prochaine cellule de la boucle 2 teo = dics.keys 'définit le tabeau teo ''DEBUT ENTETE DU TABLEAU 1ERE PARTIE o.Range("A6") = "Localisation" o.Range("A7") = "Localisation" o.Range("B6") = "Alimentation" o.Range("C6") = "Alimentation" o.Range("B7") = "Tension" & Chr(10) & "(Volt)" o.Range("C7") = "Courant" & Chr(10) & "(Ampère)" ''SUITE TABLEAU EXTRAITE DE LA BD'''''''''''''''''''' y = 2 'initialise la variable y For x = 0 To UBound(teo) 'boucle 3 : sur toutes les outils (sans doublon) o.Cells(6, y + 2).Value = teo(x) 'place l'outil dans le tableau o.Cells(6, y + 2).Offset(, 1).Value = teo(x) 'place l'outil dans le tableau o.Cells(7, y + 2).Value = "Potentiel" & Chr(10) & "(mV)" o.Cells(7, y + 2).Offset(, 1).Value = "Courant" & Chr(10) & "(mA)" y = y + 2 'incrément y 'o.Cells(7, y + 2).Offset(-1, 0).Offset(1, 0).Value = "Direction" 'o.Cells(7, y + 3).Offset(-1, 0).Value = "Observations" ''FIN entete ligne DU TABLEAU''''''''''''''''''''''' dercol = o.Range("A6").End(xlToRight).Column o.Cells(6, dercol + 1).Value = "Observations" 'o.Cells(6, dercol + 1).Offset(, 1).Value = "Direction" o.Cells(7, dercol + 1).Value = "Observations" 'o.Cells(7, dercol + 1).Offset(, 1).Value = "Direction" Next x 'prochain outil de la boucle 3 '''ENTETE COLONNE (A) DU TABLEAU''''''''''''''''''''''''''' Set dics = CreateObject("Scripting.Dictionary") 'définit le dictionnaire dics For Each cel In pl.Offset(0, 2).SpecialCells(xlCellTypeVisible) 'boucle 2 : sur toutes les cellules visibles cel de la plage pl déclalée d'un colonne à droite 'dics(cel.Value) = "" 'alimente le dictionnaire dics dics.Item(cel.Value) = dics.Item(cel.Value) '^^^^^^^^^^^^^^^^^^^^^^ Next cel 'prochaine cellule de la boucle 2 o.Range("A8").Resize(dics.Count) = Application.Transpose(dics.keys) 'renvoie en colonne à partir de A2 la liste des outils sans doublons bd.Range("A1").AutoFilter 'annule le filtre automatique Next i 'prochaine valeur de la boucle 1 End Sub
Pourquoi, trouvez-vous cela drôle?
Pourquoi, trouvez-vous cela drôle? Imaginez que vous extrayez d'une BD oracle, au format Excel et que l'on vous demande de l'exploiter avec un canevas imposé. La drôlerie est peut-être dans le canevas.
ce canevas est imposé. On s'en tient là!
Je ne sais pas ce que tu as finalement fait exactement avec "une colonne D"
Si tu veux une aide efficace, il va sans aucun doute falloir que tu exposes clairement et complètement tes tenants et aboutissants.
Je ne reviendrai qu'après cette réflexion, qui, elle, n'a besoin d'aucune connaissance en matière de développement.
Comportement enregistré dans ma mémoire pour l'avenir, donc.
si tu avais simplement voulu apprendre l'utilisation d'un dictionnaire, il fallait le demander
Bonne chance ailleurs