Référencer une variable range dans un range
Fermé
dannzka
Messages postés
4
Date d'inscription
vendredi 24 octobre 2014
Statut
Membre
Dernière intervention
27 octobre 2014
-
24 oct. 2014 à 17:22
dannzka Messages postés 4 Date d'inscription vendredi 24 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014 - 27 oct. 2014 à 09:55
dannzka Messages postés 4 Date d'inscription vendredi 24 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014 - 27 oct. 2014 à 09:55
A voir également:
- Référencer une variable range dans un range
- La méthode range de l'objet _global a échoué ✓ - Forum VB / VBA
- Input signal out of range change settings to 1600x900-60hz - Forum Windows
- D'sub out of range - Forum Ecran
- Out of range - Forum Windows
- Ecran noir avec 'out of range" sous windows 10 - Forum Ecran
7 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
Modifié par Patrice33740 le 24/10/2014 à 18:00
Modifié par Patrice33740 le 24/10/2014 à 18:00
Essaies :
Cordialement
Patrice
Option Explicit Private Sub x() Dim dat_StartDate As Date, dat_EndDate As Date Dim cel_StartDate As Range, cel_EndDate As Range, rng_Dates As Range dat_StartDate = Worksheets("Parameters").Range("G11").Value dat_EndDate = Worksheets("Parameters").Range("G12").Value Set cel_StartDate = Worksheets("Historical_Data").Range("A2:A49").Find(what:=dat_StartDate) Set cel_EndDate = Worksheets("Historical_Data").Range("A2:A49").Find(what:=dat_EndDate) If Not cel_StartDate Is Nothing And Not cel_EndDate Is Nothing Then Set rng_Dates = Range(cel_StartDate, cel_EndDate) 'traitement ... par exemple : MsgBox rng_Dates.Rows.Count End If End Sub
Cordialement
Patrice
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
24 oct. 2014 à 18:17
24 oct. 2014 à 18:17
Si tu as l'erreur 1004, c'est certainement que la valeur recherchée n'a pas été trouvée.
Essaie comme cela :
A+
Essaie comme cela :
Dim str_startdate As String, str_enddate As String
Dim rng_startdate As Range, rng_enddate As Range
Dim lng_startdate As Long, lng_enddate As Long
With Worksheets("Parameters")
str_startdate = .Range("G11").Value
str_enddate = .Range("G12").Value
End With
With Worksheets("Historical_Data")
Set rng_startdate = .Range("A2:A49").Find(what:=str_startdate)
If Not rng_startdate Is Nothing Then
lng_startdate = .Range(.Range("A2"), rng_startdate).Rows.Count
Else
MsgBox "La valeur " & str_startdate & " n'a pas été trouvée."
End If
Set rng_enddate = .Range("A2:A49").Find(what:=str_enddate)
If Not rng_enddate Is Nothing Then
lng_enddate = .Range(.Range("A2"), rng_enddate).Rows.Count
Else
MsgBox "La valeur " & str_enddate & " n'a pas été trouvée."
End If
End With
A+
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
24 oct. 2014 à 17:48
24 oct. 2014 à 17:48
Bonjour,
Essaie comme cela :
A+
Essaie comme cela :
Dim str_startdate As String, str_enddate As String
Dim rng_startdate As Range, rng_enddate As Range
Dim lng_startdate As Long, lng_enddate As Long
With Worksheets("Parameters")
str_startdate = .Range("G11").Value
str_enddate = .Range("G12").Value
End With
With Worksheets("Historical_Data")
Set rng_startdate = .Range("A2:A49").Find(what:=str_startdate)
Set rng_enddate = .Range("A2:A49").Find(what:=str_enddate)
lng_startdate = .Range(.Range("A2"), rng_startdate).Rows.Count
lng_enddate = .Range(.Range("A2"), rng_enddate).Rows.Count
End With
A+
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
Modifié par eriiic le 24/10/2014 à 17:53
Modifié par eriiic le 24/10/2014 à 17:53
Bonjour,
Tu lui passes un range là où il attend un n° de ligne (un nombre)
Si tu veux la ligne de rng_startdate c'est rng_startdate.row
Mais est-ce que tu trouves vraiment le bon rng_startdate ? J'ai un doute vu qu'il s'agit d'une date et que c'est particulier. Contrôle cette variable en mettant un Stop.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Tu lui passes un range là où il attend un n° de ligne (un nombre)
Si tu veux la ligne de rng_startdate c'est rng_startdate.row
Mais est-ce que tu trouves vraiment le bon rng_startdate ? J'ai un doute vu qu'il s'agit d'une date et que c'est particulier. Contrôle cette variable en mettant un Stop.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dannzka
Messages postés
4
Date d'inscription
vendredi 24 octobre 2014
Statut
Membre
Dernière intervention
27 octobre 2014
24 oct. 2014 à 17:58
24 oct. 2014 à 17:58
@Gyrus, en faisant ça j'ai toujours la même erreur 1004 :/
@Eriiic, j'ai donc remplacé
par
mais ça me donne un error 438: Object doesnt support this property or method, pourtant c'est bien dimensionné en range...
Sinon peut être quelque chose pour convertir mon range en string?
En tout cas, merci de vos réponse rapides.
@Eriiic, j'ai donc remplacé
lng_startdate = Worksheets("Historical_Data").Range("A2", rng_stardate).Rows.Count
par
lng_startdate = Worksheets("Historical_Data").rng_startdate.Row
mais ça me donne un error 438: Object doesnt support this property or method, pourtant c'est bien dimensionné en range...
Sinon peut être quelque chose pour convertir mon range en string?
En tout cas, merci de vos réponse rapides.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
24 oct. 2014 à 18:42
24 oct. 2014 à 18:42
Je n'avais pas dit :
lng_startdate = Worksheets("Historical_Data").rng_startdate.Row
mais :
lng_startdate = rng_startdate.Row puisque rng_startdate est un range.
Et comme ta date est un string, mets-là as Date comme proposé par Patrice, ou bien :
Pour les dates je te conseille d'ajouter toujours le paramètre LookIn:=xlFormulas
eric
lng_startdate = Worksheets("Historical_Data").rng_startdate.Row
mais :
lng_startdate = rng_startdate.Row puisque rng_startdate est un range.
Et comme ta date est un string, mets-là as Date comme proposé par Patrice, ou bien :
Set rng_startdate = Worksheets("Historical_Data").Range("A2:A49").Find(what:=CDate(str_startdate), LookIn:=xlFormulas)
Pour les dates je te conseille d'ajouter toujours le paramètre LookIn:=xlFormulas
eric
dannzka
Messages postés
4
Date d'inscription
vendredi 24 octobre 2014
Statut
Membre
Dernière intervention
27 octobre 2014
27 oct. 2014 à 09:55
27 oct. 2014 à 09:55
Bonjour tout le monde, j'espère que vous avez passé un bon week-end.
J'ai utilisé le code de Gyrus en dimensionnant la date comme une Date et non comme un String et ça a marché. Sinon ça me mettait valeur introuvable alors que les valeurs existaient.
Merci à tous pour votre aide précieuse et votre réactivité.
J'ai utilisé le code de Gyrus en dimensionnant la date comme une Date et non comme un String et ça a marché. Sinon ça me mettait valeur introuvable alors que les valeurs existaient.
Merci à tous pour votre aide précieuse et votre réactivité.
24 oct. 2014 à 18:06
Mais merci de toutes vos réponses, je me sens moins seul :)
Modifié par Patrice33740 le 24/10/2014 à 18:37