Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de Set pour définir une plage

4 réponses
Avatar
ThierryP
Bonjour le forum,

J'ai besoin d'une petite explication....
J'ouvre deux fichiers pour faire des recherches. Je définis une plage avec ceci :
Set Plage = Workbooks(Source).Sheets("Cdes").Range("J2:J" & Range("F1000000").End(xlUp).Row)
Cela fonctionne MAIS, si Í  l'écran j'active l'autre classeur, ma plage est définie par rapport Í  la feuille active de ce deuxième classeur ??????????
Comme si l'instruction set se fichait éperdument du nom de fichier et du nom de feuille en ne tenant compte que de la feuille active....

Est-ce normal, ou alors qu'est-ce que je loupe ????

Merci d'avance Í  tout généreux contributeur !!!

ThierryP

4 réponses

Avatar
MichD
Le 15/03/22 Í  05:31, ThierryP a écrit :
Workbooks(Source).Sheets("Cdes").Range("J2:J" & Range("F1000000").End(xlUp).Row)

Bonjour,
Quand tu travailles avec des objets tels que Range, workbook,,
Worksheeet, etc.,
il est préférable d'utiliser ce type de syntaxe.
Au lieu de :
Workbooks(Source).Sheets("Cdes").Range("J2:J" &
Range("F1000000").End(xlUp).Row)
Ceci :
'-------------------------------
dim Plage as range
Dim Sh as worksheet
Set sh = workbooks(Source).worksheets("Cdes")
with sh
set Plage = .Range("J2:J" & .Range("F1000000").End(xlUp).Row)
End with
'-------------------------------
OU
'-------------------------------
dim Plage as range
With workbooks(Source).worksheets("Cdes")
set Plage = .Range("J2:J" & .Range("F1000000").End(xlUp).Row)
End With
'-------------------------------
Pour écrire l'équivalent avec la méthode, tu dois utiliser :
Set Plage - Workbooks(Source).Sheets("Cdes").Range("J2:J" &
Workbooks(Source).Sheets("Cdes").Range("F1000000").End(xlUp).Row)
Dans ta syntaxe in1tiale, Range("F1000000").End(xlUp).Row)
la valeur de Range() prend la valeur de la feuille active Í  l'écran
puisqu'il n'est pas défini comme appartenant Í  un classeur et une
feuille particulière de ce dernier. C'est ce Í  quoi sert le "POINT"
devant l'expression "Range".
MichD
Avatar
MichD
Le 15/03/22 Í  05:31, ThierryP a écrit :
Workbooks(Source).Sheets("Cdes").Range("J2:J" & Range("F1000000").End(xlUp).Row)

Bonjour,
Quand tu travailles avec des objets tels que Range, workbook,,
Worksheeet, etc.,
il est préférable d'utiliser ce type de syntaxe.
Au lieu de :
Workbooks(Source).Sheets("Cdes").Range("J2:J" &
Range("F1000000").End(xlUp).Row)
Ceci :
'-------------------------------
dim Plage as range
Dim Sh as worksheet
Set sh = workbooks(Source).worksheets("Cdes")
with sh
set Plage = .Range("J2:J" & .Range("F1000000").End(xlUp).Row)
End with
'-------------------------------
OU
'-------------------------------
dim Plage as range
With workbooks(Source).worksheets("Cdes")
set Plage = .Range("J2:J" & .Range("F1000000").End(xlUp).Row)
End With
'-------------------------------
Pour écrire l'équivalent avec la méthode, tu dois utiliser :
Set Plage - Workbooks(Source).Sheets("Cdes").Range("J2:J" &
Workbooks(Source).Sheets("Cdes").Range("F1000000").End(xlUp).Row)
Dans ta syntaxe in1tiale, Range("F1000000").End(xlUp).Row)
la valeur de Range() prend la valeur de la feuille active Í  l'écran
puisqu'il n'est pas défini comme appartenant Í  un classeur et une
feuille particulière de ce dernier. C'est ce Í  quoi sert le "POINT"
devant l'expression "Range".
MichD
Avatar
ThierryP
Bonjour Denis,
Bien vu ! Erreur d'inattention de ma part, je ne me suis pas relu !
En tous cas, toujours aussi rapide et pédagogique !
Merci Í  toi,
ThierryP
Avatar
MichD
Le 15/03/22 Í  06:37, ThierryP a écrit :
Bonjour Denis,
Bien vu ! Erreur d'inattention de ma part, je ne me suis pas relu !
En tous cas, toujours aussi rapide et pédagogique !
Merci Í  toi,
ThierryP

Set Plage = Workbooks(Source).Sheets("Cdes").Range("J2:J" &
Range("F1000000").End(xlUp).Row)
Même si tu insérais un point devant: .Range("F1000000").End(xlUp).Row)
La ligne de code générerait une erreur, et sans ce "POINT", ce range
.Range("F1000000").End(xlUp).Row) appartiendrait Í  la feuille active au
même de l'exécution et non Í  la feuille et au classeur spécifiquement
définit. Ce type de syntaxe est erroné.
MichD