SAlut
Et si tu éditais ton message et que tu m'étais des indentations et les balises code pour que ça les garde
ça serait pas une bonne idée ? Par ce que la c'est pas évident a lire et faut refaire les indentations a chaque fois que tu post 
Sélectionnes ton code et appuis sur le bouton #
[Edit]
Alors sinon
Dim r1 As Range, r2 As Range, mymultiplerange As Range
Les déclaration faut répéter a chaque fois le As, sinon du déclares les 2 premiers en variant, c'est pas la but.Et il est plus "correcte" de mettre toutes tes declarations au debut, ca n'est pas obligatoire mais c'est plus "propre".
Pour récupérer la dernière cellule non vide il vaut mieux faire comme ça
For i = 5 To .Cells(Rows.Count, "B").End(xlUp).Row
c'est pour une meilleur compatibilité avec les version récente d'excel 
Ici
If .Cells(i, 2) = .Cells(j, 2) And .Cells(i, 2) <> "" And .Cells(j, 2) <> "" Then
Si tes 2 cellule sont identique et que l'une d'elle seulement est vide c'est bon (puisque qu'elles sont identique l'autre est vide aussi 
If .Cells(i, 2) = .Cells(j, 2) And .Cells(i, 2) <> "" Then
Tu peux egalement remplacer
1 2 3
| Set r1 = .Cells(i, 2)
Set r2 = .Cells(j, 2)
Set mymultiplerange = Union(r1, r2) |
Par
Set mymultiplerange = Range(.Cells(i, 2), .Cells(j, 2))
Tu peux donc supprimer r1 et r2 qui ne servent plus, dans la declaration Dim du debut
Attention ton raisonnement est pas bon dans cette parti du code(je viens de m'en rendre compte)
Je pense que tu cherche plutot a faire quelque chose comme ca
1 2 3 4 5 6 7 8 9
| 'Set r1 = .Cells(i, 2)
'Set r2 = .Cells(j, 2)
'Set mymultiplerange = Union(r1, r2)
Set mymultiplerange = Range(.Cells(i, 2), .Cells(j, 2))
If .Cells(i, 2) = .Cells(j, 2) And .Cells(i, 2) <> "" And .Cells(j, 2) <> "" Then
mymultiplerange.EntireRow.Hidden = False
Else
mymultiplerange.EntireRow.Hidden = True
End If |
En voila deja un bout de traité, pour ton probleme je regarde mais je pense qu'il suffit d'inversé le If final
[/Edit]
Merci 
A++
Qwaz
Partager