Definition d'un Range à partir de variables

  • Initiateur de la discussion Initiateur de la discussion FC57
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FC57

XLDnaute Nouveau
Bonjour,

Je suis débutant en VBA et je suis actuellement bloqué pour l'écriture de mon code.
J'ai déjà réussi à identifier ma première et ma dernière ligne du range.

Maintenant je souhaite définir le range en question pour l'inclure plus tard dans une fonction Vlookup.

Le code que j'ai écrit est le code ci dessous. Quand j'exécute la macro, j'obtient une erreur sur la ligne : Set RngPBD = Sheets("sheet1").Range(Cells(BegRngPBD, 1), Cells(EndRndPBD, 20))

Sub test_macro()
'
' test_macro Macro
'

Dim StartRngPBD As Long
Dim EndRngPBD As Long
Dim RngPBD As Range

i = 3

Do Until Sheets("sheet1").Range("A" & i).Value = Sheets("sheet1").Range("W3").Value
StartRngPBD = i + 1

i = i + 1

Loop

i = 3

Do Until Sheets("sheet1").Range("A" & i).Value = Sheets("sheet1").Range("W4").Value
EndRngPBD = i

i = i + 1

Loop



Sheets("sheet1").Range("W6").Value = StartRngPBD
Sheets("sheet1").Range("W7").Value = EndRngPBD


Set RngPBD = Sheets("sheet1").Range(Cells(BegRngPBD, 1), Cells(EndRndPBD, 20))

Sheets("sheet1").Range("Y3").Value = RngPBD


End Sub


Quelqu'un aurait il une idée de la raison de cette erreur ?
Merci par avance.

Cédric
 
Re : Definition d'un Range à partir de variables

Bonjour,

j'obtient une erreur sur la ligne :
Set RngPBD = Sheets("sheet1").Range(Cells(BegRngPBD, 1), Cells(EndRndPBD, 20))

La variable BegRngPBD n'est pas définie ni initialisée.

Bonne suite
 
Dernière édition:
Re : Definition d'un Range à partir de variables

Salut,

pour trouver tes cellules de départ et de fin. utilise plutot la méthode find.

Code:
Sub test_macro()
'
' test_macro Macro
'

With Sheets("sheet1").Range("a1:a5000")
    Set c = .Find(Range("W3").Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        StartRngPBD = c.Address
    End If

    Set c = .Find(Range("W4").Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        EndRngPBD = c.Address
    End If
End With


Sheets("sheet1").Range("W6").Value = StartRngPBD
Sheets("sheet1").Range("W7").Value = EndRngPBD


Set RngPBD = Sheets("sheet1").Range(StartRngPBD, EndRngPBD)
RngPBD.Select
Sheets("sheet1").Range("Y3").Value = RngPBD.Address


End Sub
 
Re : Definition d'un Range à partir de variables

Merci pour vos réponses.

J'ai utilisé la fonction Find mais j'ai trouvé une erreur. Dois je initialiser "c" aussi ?

Sub test_macro()
'
' test_macro Macro
'

Dim StartRngPBD As Long
Dim EndRngPBD As Long
Dim RngPBD As Range

With Sheets("sheet1").Range("A1:A100000")
Set c = .Find(Range("W3").Value, LookIn:=xlValues)
If Not c Is Nothing Then
StartRngPBD = c.Address
End If

Set c = .Find(Range("W4").Value, LookIn:=xlValues)
If Not c Is Nothing Then
EndRngPBD = c.Address
End If
End With

Sheets("sheet1").Range("W6").Value = StartRngPBD
Sheets("sheet1").Range("W7").Value = EndRngPBD

Set RngPBD = Sheets("sheet1").Range(StartRngPBD, EndRngPBD)
RngPBD.Select
Sheets("sheet1").Range("Y3").Value = RngPBD.Address

End Sub
 
Re : Definition d'un Range à partir de variables

OK j'ai modifié la macro comme sugéré et ça marche.

Seul bémol le range ne prend en compte que la colonne A alors que j'ai besoin d'un range allant de la colonne A à la colonne T

Comment faire pour obtenir un tel résultat ?


Sub test_macro()
'
' test_macro Macro
'


With Sheets("sheet1").Range("A1:A100000")
Set c = .Find(Range("W3").Value, LookIn:=xlValues)
If Not c Is Nothing Then
StartRngPBD = c.Address
End If

Set c = .Find(Range("W4").Value, LookIn:=xlValues)
If Not c Is Nothing Then
EndRngPBD = c.Address
End If
End With

Sheets("sheet1").Range("W6").Value = StartRngPBD
Sheets("sheet1").Range("W7").Value = EndRngPBD

Set RngPBD = Sheets("sheet1").Range(StartRngPBD, EndRngPBD)
RngPBD.Select
Sheets("sheet1").Range("Y3").Value = RngPBD.Address

End Sub
 
Re : Definition d'un Range à partir de variables

Yes j'ai déjà essaé de changer Sheets("sheet1").Range("A1:A100000") par Sheets("sheet1").Range("A1:T100000")
mais j'obtient toujours $A$9:$A$13 comme résultat alors que je souhaiterais obtenir $A$9:$T$13
 
Re : Definition d'un Range à partir de variables

Je suis arrivé au résultat escompté en partant de mon code initial.

Merci pour vos réponses !

Sub test_macro()
'
' test_macro Macro
'

Dim StartRngPBD As Long
Dim EndRngPBD As Long
Dim RngPBD As Range

i = 3

Do Until Sheets("sheet1").Range("A" & i).Value = Sheets("sheet1").Range("W3").Value
StartRngPBD = i + 1

i = i + 1

Loop

i = 3

Do Until Sheets("sheet1").Range("A" & i).Value = Sheets("sheet1").Range("W4").Value
EndRngPBD = i

i = i + 1

Loop



Sheets("sheet1").Range("W6").Value = StartRngPBD
Sheets("sheet1").Range("W7").Value = EndRngPBD

Cel1 = "$" & "A" & "$" & StartRngPBD
Cel2 = "$" & "T" & "$" & EndRngPBD

Sheets("sheet1").Range("Y3").Value = Cel1
Sheets("sheet1").Range("Y4").Value = Cel2
Sheets("sheet1").Range("Y5").Value = Cel1 & ":" & Cel2


End Sub
 
Re : Definition d'un Range à partir de variables

Effectivement la valeur donnée en W4 est trouvée en A13.
Je sais donc que je dois aller de la ligne 9 à 13.
Ensuite je vais avoir besoin du numéro de ligne pour les définir le range dans une Vlookup. le range à définir dans la Vlookup sera donc $A$9:$A$13
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
752
Réponses
1
Affichages
277
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
613
Réponses
10
Affichages
903
Réponses
4
Affichages
703
Retour