Macro Excel duplicage

Résolu
Bonjour,

j'ai un problème de macro sur mon fichier excel (je suis débutant total en VBA) : voici la macro elle-même :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns("l")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Target.Offset(0, -1) = Date
End If
End Sub

Le problème que j'ai, c'est que je voudrai dupliquer cette formule, pour que plusieurs colonnes se remplissent automatiquement, par exemple la colonne o par rapport à p, la u par rapport à v, etc...

J'ai essayé plusieurs moyens, en recherchant des solutions, mais je trouve sa assez compliqué... :s

1 réponse

  1. Modérateur
    Bonjour,

    Un exemple vite fait :
    On remplit un Array avec les numéros des colonnes, puis on compare le numéro de la colonne de Target avec les valeurs de cet array. Si on trouve une correspondance on exécute le code.
    Voici :

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Colonnes As Variant
    
    'A placer en premier pour éviter les erreurs :
    If Target.Count > 1 Then Exit Sub
    'place ici tes numéros de colonnes 12 = L, 16 = P, 22 = V etc...
    Colonnes = Array(12, 16, 22)
    'Application.Match renvoie une erreur si pas de correspondance.
        'donc si pas d'erreur alors 
    If Not IsError(Application.Match(Target.Column, Colonnes, 0)) Then
        'on inscrit la date
        Target.Offset(0, -1) = Date
    End If
    End Sub

    1. Merci ! La solution que tu propose fonctionne correctement.

      Les possibilités qu'apporte ce système à excel m'ont l'air d'être énormes. Je pense que je vais me plonger un peu plus dans les macros.
    2. Modérateur
      Cette solution fonctionne et est évolutive. Il est en effet aisé d'ajouter ou d'enlever des colonnes dans : Colonnes = Array(12, 16, 22).
      Les possibilités d'Excel avec VBA sont en effet assez impressionnantes, tu t'en rendra compte si tu persévères.
      A bientôt alors.