Bonjour,
pour ça
Set Plage = Range("A1:A65000").Find(nom, lookat:=xlWhole)
Comme tu l'as vu, j'ai plutôt utilisé Cells(x,y) au lieu de Range ... ça permet de manipuler les numéros de colonnes plus facilement et de bien isoler la partie Ligne et la partie colonne
Comme souvent, on a plusieurs manières d'écrire dynamiquement la chose. Et pas forcément besoin d'utiliser Range ou Cells d'ailleurs.
Des manières un peu brutes, comme ici où on se prend pas la tête et on cherche dans toute la colonne de la feuille active
Set Plage = Columns(1).Find(nom, lookat:=xlWhole)
De façon un peu plus élaborée, en limitant la recherche sur la plage utilisée dans la feuille active
Set Plage = UsedRange.Columns(1).Find(nom, lookat:=xlWhole)
De façon un peu plus subtile, en limite la recherche sur la plage contigüe qui contient la cellule A1
Set Plage = CurrentRegion.Columns(1).Find(nom, lookat:=xlWhole)
Et finalement, des exemples avec Cells ... que personnellement je n'utiliserai pas (ce qui est au dessus est plutôt ma façon de procéder)
Set Plage = Range(Cells(1,1),Cells(Rows.Count,1).End(Xlup)).Find(nom, lookat:=xlWhole)
Set Plage = Cells(1,1).Resize(UsedRange.Rows.Count,1).Find(nom, lookat:=xlWhole)
J'ai plusieurs fois souligné que ces codes s'appliquent sur la feuille ACTIVE
En effet, si on indique pas l'objet parent (la feuille d'une plage par exemple .... ou le classeur d'une feuille), alors c'est l'objet actif qui est pris par défaut (la feuille active, le classeur actif, la cellule active etc...)
Ce qui va répondre à ta deuxième interrogation au sujet de la copie des feuilles
Voici un exemple qui copie une plage de la feuille Toto du classeur A, pour la coller dans la feuille Tata du classeur B
Il suffit de toujours référencer les filiations
WorkBooks("A").WorkSheets("Toto").Range("A1").Copy WorkBooks("B").WorkSheets("Tata").Range("B3")
Si tu dois utiliser plusieurs fois tes feuilles et tes classeurs, utilise des variables pour alléger l'écriture
C'est parfois plus pratique d'avoir deux lignes de déclaration de variables, plutôt de se retrouver à 5 reprises avec des lignes de codes longues comme un jour sans pain
1 2 3 4 5 6 7
| Dim FeuilleSource as Worksheet
Dim FeuilleDest as Worksheet
Set FeuilleSource = WorkBooks("A").WorkSheets("Toto")
Set FeuilleDest = WorkBooks("B").WorkSheets("Tata")
FeuilleSource.Range("A1").Copy FeuilleDest.Range("B3") |
Partager