Comme je te le disais précédemment, j’ai utilisé le nommage des tableaux pour fixer le décalage.
En nommant les plages correspondant aux tableaux, tu t’affranchis des problèmes de codage liés à l’adressage direct.
Exemple :
Pour affecter la plage correspondant au Tableau 1 à la variable CRef, j’écris :
Set CRef = Range("C5 :Z75")
Si l’emplacement du tableau est modifié, le code devient erroné.
Maintenant, si je nomme "Tablo1" la plage C5:Z75 et que j’écris :
Set CRef = Range("Tablo1")
Si l’emplacement du tableau est modifié, le code reste correct car la plage de référence associée au nom est automatiquement mise à jour.
Après, pour fixer le décalage, il suffit d’exprimer ce dernier en fonction de la position des 2 tableaux.
Dans la ligne de code :
Cells(Target.Row, Target.Column).Offset(0, Range("Tablo3").Column - Range("Tablo2").Column) = "X"
C’est l’instruction Offset(0, Range("Tablo3").Column - Range("Tablo2").Column) qui fixe le décalage.
Elle indique d’une part que le décalage de ligne est nul Offset(0,...) et d’autre part que le décalage de colonne vaut Range("Tablo3").Column - Range("Tablo2").Column, avec :
Range("Tablo3").Column qui vaut 58 (première colonne de la plage de Tablo3)
Range("Tablo2").Column qui vaut 32 (première colonne de la plage de Tablo2)
Le décalage est donc de 26 colonnes.
Par contre, tu comprends bien que d’autres modifications de la structure de ta feuille vont avoir des répercutions sur le code.
Pour exemple, tu remarqueras que seul le décalage de colonne est pris en compte. Si tu viens à décaler les lignes, il faudra adapter le code.
En clair et résumé, avant de coder il faut d’abord savoir ce que l’on veut faire .
De plus, si tu ne connais rien à VBA, il va falloir apprendre car ça ne se fera pas tout seul .
A+