Macro Excel duplicage

Résolu/Fermé
lelion4 - 26 avril 2013 à 11:26
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 26 avril 2013 à 12:56
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
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 avril 2013 à 12:02
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 avril 2013 à 12:56
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