Macro Excel duplicage

Résolu
lelion4 -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. lelion4
       
      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.
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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.
      0