Bonjour tt le monde,
J'ai crée un macro qui me permets de de fusionner des cellules avec des conditions à l'aide de @mapomme que je le remercie une autre fois.
Dans le fichier joint vous trouverez un travail que j'essaye de l'effectuer mais j'arrive pas:
Les conditions de fusion:
1- Fusionner les doublons en colonne B
2- En colonne "H" : un "/" entre les valeurs des doublons
3- En colonne "J" : si en trouve voiture parmi les valeurs de doublon en colonne "K" en laisse que voiture
4- de colonne K jusqu'à "P" en additionne les valeurs
Ma macro additionne tous les valeurs à partir de colonne "K" , moi j'aimerais bien qu'elle s’arrête d'additionner au colonne "P"
ci-joint trois Feuils:
1- Feuil1:! tableau base de données
2-Result : résulta obtenu après avoir activé ma macro ( qui ne fonctionne pas comme je veux )
3- Correcte : résultat que je souhaite obtenir
Merci d'avance
J'ai crée un macro qui me permets de de fusionner des cellules avec des conditions à l'aide de @mapomme que je le remercie une autre fois.
Dans le fichier joint vous trouverez un travail que j'essaye de l'effectuer mais j'arrive pas:
Les conditions de fusion:
1- Fusionner les doublons en colonne B
2- En colonne "H" : un "/" entre les valeurs des doublons
3- En colonne "J" : si en trouve voiture parmi les valeurs de doublon en colonne "K" en laisse que voiture
4- de colonne K jusqu'à "P" en additionne les valeurs
Ma macro additionne tous les valeurs à partir de colonne "K" , moi j'aimerais bien qu'elle s’arrête d'additionner au colonne "P"
ci-joint trois Feuils:
1- Feuil1:! tableau base de données
2-Result : résulta obtenu après avoir activé ma macro ( qui ne fonctionne pas comme je veux )
3- Correcte : résultat que je souhaite obtenir
Merci d'avance
VB:
Sub test()
Dim derlig&, t, d, aux, i&, j&, clef, n&, TextCompare
derlig = Cells(Rows.Count, "e").End(xlUp).Row
t = Range("a1:x" & derlig)
Set d = CreateObject("scripting.dictionary")
d.CompareMode = TextCompare
For i = 1 To derlig
If Not d.Exists(CStr(t(i, 2))) Then
ReDim aux(1 To UBound(t, 2))
For j = 1 To UBound(t, 2): aux(j) = t(i, j): Next j
d.Add CStr(t(i, 2)), aux
Else
aux = d(CStr(t(i, 2)))
For j = 10 To UBound(t, 2): aux(j) = aux(j) + t(i, j): Next j
If LCase(t(i, 9)) = "VOITURE" Then aux(9) = "VOITURE"
d(CStr(t(i, 2))) = aux
End If
Next i
With Worksheets("Result")
.Activate
For Each clef In d.Keys
n = n + 1
aux = d(clef)
For j = 1 To UBound(aux): t(n, j) = aux(j): Next
Next clef
.UsedRange.Clear
.Range("a1").Resize(d.Count, UBound(t, 2)) = t
Worksheets("Feuil1").Range("a2:x2").Copy
.Range("a2:x2").Resize(n - 1).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
.Range("a1:x1").EntireColumn.AutoFit
End With
End Sub