Bonjour à toutes et à tous
J'ai un souci sur une macro de colorisation de doublon :
Elle fonctionne très bien si l’on active une cellule dans la colonne où l’on veut détecter les doublons
Le problème est lorsque l’on active une cellule située en dessous de la dernière ligne de cette colonne, les cellules écrites au dessus ne sont pas traitées ça colorise toutes les cellules vides de la colonne, jusqu’en bas de la feuille et la macro ne s’arrête plus.
2 ème Problème, si une cellule vide se trouve entre d’autres cellules remplies, la macro s’arrête au dessus de cette cellule vide et ne traite pas ce qu’il y a en dessous.
3ème détail je désirerais faire apparaitre mon « messageBox » uniquement si aucune cellule n’est activée (cas lorsque l’on vient de changer de feuille) .
Y a-t-il un moyen de contourner ces 2 problèmes ? Je débute en VBA et je ne sais pas trop comment m’y prendre.
Merci beaucoup pour votre aide
J'ai un souci sur une macro de colorisation de doublon :
Elle fonctionne très bien si l’on active une cellule dans la colonne où l’on veut détecter les doublons
Le problème est lorsque l’on active une cellule située en dessous de la dernière ligne de cette colonne, les cellules écrites au dessus ne sont pas traitées ça colorise toutes les cellules vides de la colonne, jusqu’en bas de la feuille et la macro ne s’arrête plus.
2 ème Problème, si une cellule vide se trouve entre d’autres cellules remplies, la macro s’arrête au dessus de cette cellule vide et ne traite pas ce qu’il y a en dessous.
3ème détail je désirerais faire apparaitre mon « messageBox » uniquement si aucune cellule n’est activée (cas lorsque l’on vient de changer de feuille) .
Y a-t-il un moyen de contourner ces 2 problèmes ? Je débute en VBA et je ne sais pas trop comment m’y prendre.
Code:
Type TableauType
Contenu As String
Coordonnee As Integer
End Type
Sub Inventaire_G()
'G : Macros de colorisation des doublons (en jaune)
'Macro N° 1 (1 minute de travail environ)
Dim Tableau() As TableauType
Dim Cellule, Haut, Bas, Compteur, C2
On Error Resume Next
If Selection Is Nothing Then
MsgBox "Quittez l'userform et Selectionnez une cellule dans la colonne à dédoublonner."
Exit Sub
End If
Colonne = ActiveCell.Column
Haut = Selection.End(xlUp).Row
Bas = Selection.End(xlDown).Row
ReDim Tableau(Bas)
For Compteur = Haut To Bas
Tableau(Compteur).Contenu = Cells(Compteur, Colonne)
Tableau(Compteur).Coordonnee = Cells(Compteur, Colonne).Row
Next
For Compteur = Haut To Bas
For C2 = (Compteur + 1) To Bas
If Tableau(Compteur).Contenu = Tableau(C2).Contenu Then
Cells(Tableau(Compteur).Coordonnee, Colonne).Interior.ColorIndex = 6
Cells(Tableau(C2).Coordonnee, Colonne).Interior.ColorIndex = 6
End If
Next
Next
End Sub
Merci beaucoup pour votre aide
Dernière édition: