Macro valide dans feuille active
Bonjour,
J'ai créé une macro pour effectuer diverses opérations pour conduire à l'élimination de doublons, suite à l'importation de données. Mon classeur comporte une vingtaine de feuillles et les importations de données peuvent se faire dans l'une ou l'autre de ces feuilles. Comme j'ai créé ma macro dans une feuille en particulier, elle ne fonctionne pas dans les autres feuilles. Je ne sais pas comme faire référence à la feuille active. La macro a été créée dans la feuille intitulée « Montérégie».
Merci à l'avance de votre aide
Voici ma macro
Sub Doublons()
'
' Doublons Macro
'
' Touche de raccourci du clavier: Ctrl+q
'
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Copy
ActiveCell.Offset(1, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.AutoFilter
ActiveWorkbook.Worksheets("Montérégie").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Montérégie").AutoFilter.Sort.SortFields.Add( _
ActiveCell.Offset(-1, 0).Range("A1:A16405"), xlSortOnCellColor, xlAscending, , _
xlSortNormal).SortOnValue.Color = RGB(255, 199, 206)
With ActiveWorkbook.Worksheets("Montérégie").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Bonjour et bienvenu(e)
Macro qui fait référence à la feuille active
Sub Doublons()
'
' Doublons Macro
'
' Touche de raccourci du clavier: Ctrl+q
'
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Copy
ActiveCell.Offset(1, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.AutoFilter
ActiveSheet.AutoFilter.Sort.SortFields.Clear
ActiveSheet.AutoFilter.Sort.SortFields.Add(ActiveCell.Offset(-1, 0).Range("A1:A16405"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 199, 206)
With ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
bonjour
j'allais mettre la solution mais banzai est passé avant moi
je laisse la place
Fred
Bonjour
@ fred2406
Si tu as une solution il ne faut pas hésiter
banzai , en fait..... c'était la meme si j'ai bien vu :
remplacer le
ActiveWorkbook.Worksheets("Montérégie")
par
activesheet
donc pas besoin de le faire 2 fois.....
fred
Merci pour vos réponses rapides.
Par contre, j'avais déjà essayé quelque chose du genre. Je viens de réessayer et j'obtiens un message d'erreur.
Erreur d'exécution '91'
Variable objet ou variable de bloc With non définie
Avez-vous une autre piste pour moi ?
Bonjour
gibri a écrit :Avez-vous une autre piste pour moi ?
Oui celle de fournir ton fichier (anonymisé si besoin)
Voici mon fichier. J'ai placé quelques valeurs arbitraires. En principe, on doit sélectionner la ligne entière comportant les nouvelles données avant d'activer la macro.
Bonjour
Que veux faire une fois les doublons repérés ?
Pour que la macro fonctionne
Il ne faut pas que la colonne soit en mode filtre
Sub Doublons()
'
' Doublons Macro
'
' Touche de raccourci du clavier: Ctrl+q
'
ActiveSheet.AutoFilterMode = False
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Copy
Il faut modifier la macro
Selection.AutoFilter
ActiveSheet.AutoFilter.Sort.SortFields.Clear
ActiveSheet.AutoFilter.Sort.SortFields.Add( _
ActiveCell.Offset(0, 0).Range("A1:A16405"), xlSortOnCellColor, xlAscending, , _
xlSortNormal).SortOnValue.Color = RGB(255, 199, 206)
With ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Le fichier contient une liste de distribution de nos clients par région administrative. Certains clients nous ont fait parvenir une demande de prix sur un projet donné. Nous envoyons notre soumission à ces clients dans un premier temps. Dans un deuxième temps, nous envoyons notre soumission à tous les autres clients de cette région, mais nous ne voulons pas envoyer une deuxième fois aux clients déjà compris dans cette liste. Nous copions donc la liste des courriels déjà utilisés dans la feuille et le résultats de la copie est une ligne. La macro sert donc à remettre la ligne en colonne, à supprimer les espace indésirables qui suivent la copie, faire la recherche de doublon, les faire ressortir par une mise en forme et faire un tri selon la mise en forme. Les courriels excluent de la mise en forme sont alors sélectionnés et copiés pour l'envoi de la soumission.
En principe, ce fichier n'est jamais sauvegardé après utilisation de la macro pour éviter les conflits de formatage avec la macro. Il faut croire que j'avais oublié de retirer le filtre avant mon test. Effectivement, je dois plutôt inclure une remise à zéro des formats. Ce sera plus complet.
Merci de votre aide