Macro vba
Résolu
RomainG
-
ed555 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
ed555 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ceci est un problème relativement similaire à une question que j'ai posé hier. J'ai donc essayé de m'inspirer de l'aide que l'on m'a apporté hier mais en vain.
Col 1 Col 2
1 1
1 1
1 2
1 2
2 3
2 3
2 4
3 5
3 5
3 5
3 6
3 6
Je souhaiterai créer deux autres colonnes à partir de ces deux premières. La colonne 4 serait la colonne 2 mais sans doublon. Et je souhaiterai qu'en colonne 3 apparaisse les valeurs de la colonne 1 correspondant au valeur de la colonne 2. Pour plus de clarté le résultats de mon exemple serait comme ci dessous :
Col 3 Col4
1 1
1 2
2 3
2 4
3 5
3 6
Pouvez m'aider à la création d'une macro vba pour la réalisation de la colonne 3. (La colonne 4 n'étant qu'un simple comptage classique).
Sub moyenne_lot()
i = 1
Do While Cells(i, 2) <> ""
valeur = Cells(i, 1)
lot = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
lot = valeur
i = i + 1
Loop
Loop
End Sub
Voici ce que j'ai essayé de faire mais sans grand résultats.
Merci à vous.
Romain
Ceci est un problème relativement similaire à une question que j'ai posé hier. J'ai donc essayé de m'inspirer de l'aide que l'on m'a apporté hier mais en vain.
Col 1 Col 2
1 1
1 1
1 2
1 2
2 3
2 3
2 4
3 5
3 5
3 5
3 6
3 6
Je souhaiterai créer deux autres colonnes à partir de ces deux premières. La colonne 4 serait la colonne 2 mais sans doublon. Et je souhaiterai qu'en colonne 3 apparaisse les valeurs de la colonne 1 correspondant au valeur de la colonne 2. Pour plus de clarté le résultats de mon exemple serait comme ci dessous :
Col 3 Col4
1 1
1 2
2 3
2 4
3 5
3 6
Pouvez m'aider à la création d'une macro vba pour la réalisation de la colonne 3. (La colonne 4 n'étant qu'un simple comptage classique).
Sub moyenne_lot()
i = 1
Do While Cells(i, 2) <> ""
valeur = Cells(i, 1)
lot = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
lot = valeur
i = i + 1
Loop
Loop
End Sub
Voici ce que j'ai essayé de faire mais sans grand résultats.
Merci à vous.
Romain
4 réponses
-
salut,
"je souhaiterai qu'en colonne 3 apparaisse les valeurs de la colonne 1 correspondant au valeur de la colonne 2"
qu'entends-tu par là ? j'ai du mal à voir... -
C'est vrai que c'est un problème assez dur à expliquer par écrit. Je vais essayer d'être plus précis.
On considère que la colonne 4 est la même colonne 2 mais sans doublon (elle est donc forcément plus petite). La colonne 2 est associé à des chiffres de la colonne 1.
Je souhaiterai que dans la colonne 3 les chiffres soient ceux de la colonne 1, qui étaient affecté à ceux de la colonne 2.
Suis je assez clair? J'ai rédigé l'exemple pour que ce soit plus explicite mais s'il faut encore détailler certains point, je t'écoute.
Merci
Romain -
Bonjour
Sub apurer() Dim derlig As Long, cptr As Long Dim dico As Object Dim ref1, ref2 Dim liste1, liste2 derlig = Cells(Cells.Rows.Count, 2).End(xlUp).Row Set dico = CreateObject("scripting.dictionary") For cptr = 1 To derlig ref1 = Cells(cptr, 2) ref2 = Cells(cptr, 1) If Not dico.exists(ref1) Then dico.Add ref1, ref2 End If Next liste2 = dico.items liste1 = dico.keys Application.ScreenUpdating = False Range("C1:D40000").Clear Range("C1:C" & dico.Count) = Application.Transpose(liste2) Range("D1:D" & dico.Count) = Application.Transpose(liste1) End Sub
je ne connais pas le vrai type de ref1,ref2 donc...
liste1 et liste2 doivent rester en variant
mais peut-^tre pouvait on le faire + simplement avec des filtres (si j'ai le temps, je regarderais)
Michel -
Merci beaucoup Michel. Cela marche parfaitement bien. Je suis impressionné par la réactivité et la connaissance des membres de ce forum. Chapeau à vous !
Encore merci !
Romain