Lancer une macro suivant une cellule ou la valeur change

Bonjour,

je bloque pour lancer une macro

je souhaite que le copier coller d'un tableau à un autre se fasse en fonction de la semaine

Je met le numéro de semaine dans la case A1 de la feuille "Surdosage Hebdo"

je bloque avec le code avec la variable A

quelle est mon erreur svp ? pourquoi ma variable A n'est pas prise en compte et pourquoi quand je met

range.worksheets j'ai un message d'erreur

merci

Sub Macro2()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim L As Byte 'déclare la variable L (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim A As Variant
A = Range("a1").whorsheets("Surdosage Hebdo")

Set OS = Worksheets("ASS") 'définit l'onglet source OS
Set OD = Worksheets("Surdosage Hebdo") 'définit l'onglet destination OD
OD.Range("A11:ad1000").ClearContents 'efface les anciennes valeurs colonne A à ad de l'onglet destination
TV = OS.Range("A16").CurrentRegion 'définit la tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If UCase(TV(I, 4)) = A Then 'condition : si la donnée ligne I colonne 4 de TV (convertie en majuscule) est égale à la case a1 de la page surdosage 
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To 30, 1 To K) 'redimensionne le tableau des lignes (30 lignes, K colonnes)
        For L = 1 To 30 'boucle 2 : sur 30 colonnes
            TL(L, K) = TV(I, L) 'récupère dans la ligne L de TL, la donnée en colonne L de TV (=> Transpostion)
        Next L 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
'si K est supérieure à 1, renvoie le tableau TL transposé dans la cellule A11 redimensionnée de l'onglet OD
If K > 1 Then OD.Range("A11").Resize(K, 30).Value = Application.Transpose(TL)
End Sub

Bonjour,

Remplacer :

A = Range("a1").whorsheets("Surdosage Hebdo")

Par :

A = Worksheets("Surdosage Hebdo").Range("A1")

Cdlt.

Merci Jean-Eric, c'est parfait, il faut donc fonctionner en entonnoir si je comprend bien.

j'ai mis le format de la cellule en texte pour que cela fonctionne

Rechercher des sujets similaires à "lancer macro suivant valeur change"