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.

5test-gibri.xlsm (26.10 Ko)

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

Rechercher des sujets similaires à "macro valide feuille active"