Rapport de message :*
 

Re: Copier coller colonnes d'un fichier à un autre

Titre du sujet : Re: Copier coller colonnes d'un fichier à un autre
par myDearFriend! le 23/12/2022 20:24:35

Citation :

Razmo a écrit :

Pour le reste, ton explication etait très comprehensible je te remercie pour ça, juste je comprends pas très bien la partie With/end With que t'as mis.

 

Un petit tour dans l'aide VBA Microsoft sur l'instruction With (ou plus exactement sur le bloc d'instructions With / End With) :

 

L’instruction With vous permet d’exécuter une série d’instructions sur un objet spécifié sans requalifier le nom de l’objet. Par exemple, pour modifier plusieurs propriétés sur un même objet, placez les instructions d’affectation de propriétés dans la structure de contrôle With et faites référence une fois à l’objet, au lieu d’y faire référence à chaque affectation de propriété.

 

Autrement dit, si je prends par exemple ton code :

'Define variables for Diff tab
Set DIFF_DETECT_H = DIFF_WS.Range("A2").EntireRow.Find("Detection Class")
Set DIFF_LABEL_H = DIFF_WS.Range("A2").EntireRow.Find("Supplier Label")
Set DIFF_DTC_H = DIFF_WS.Range("A2").EntireRow.Find("DTC code")
Set DIFF_STATE_H = DIFF_WS.Range("A2").EntireRow.Find("Activation state")

Je peux l'alléger un peu et surtout le rendre plus facile à lire en faisant :

'Define variables for Diff tab
With DIFF_WS.Range("A2").EntireRow
    Set DIFF_DETECT_H = .Find("Detection Class")
    Set DIFF_LABEL_H = .Find("Supplier Label")
    Set DIFF_DTC_H = .Find("DTC code")
    Set DIFF_STATE_H = .Find("Activation state")
End With

C'est exactement la même chose, mais beaucoup plus digeste à la lecture et compréhension du code.

 

L'expression

DIFF_WS.Range("A2").EntireRow"

représente un objet de type Range (c'est la ligne entière qui contient la cellule A2). Tu n'es donc pas obligé de l'écrire 4 fois de suite grâce à un bloc With / End With.

 

Prend bien note de la présence du "." (point) devant chaque méthode Find ci-dessus. C'est ce point qui fait le lien avec l'objet en With.

 

Bien cordialement,