Problème de range

[Résolu]
Signaler
Messages postés
134
Date d'inscription
mercredi 2 mars 2005
Statut
Membre
Dernière intervention
5 avril 2007
-
Messages postés
134
Date d'inscription
mercredi 2 mars 2005
Statut
Membre
Dernière intervention
5 avril 2007
-
bonjour
sous VBA, dans excel , je fais un find sur X sur une colonne de range ("a1:a2000"), lorsque ma valeur X est trouvé je souhaiterai ke kil fasse un autre find sur le range ("eZ:gZ") où Z est le numéro de la ligne du premier find. Je pensé qu'en faisant un split sur ladresse de la cellule contenant la valeur X et en mettant range("e & j(2) : g & j(2)") j(2) contient le numéro de la ligne de la cellule contenant la valeur X, mais cela ne marche pas. Si quelqu'un a une solution, cela m'aiderai beaucoup.
Merci d'avance
Jordinette

4 réponses

Messages postés
56
Date d'inscription
vendredi 30 mars 2001
Statut
Membre
Dernière intervention
7 septembre 2011
4
pardon, je viensde voir que je me suis trompé :
range("e" & j(2) & ":" & "g" & j(2))
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
56
Date d'inscription
vendredi 30 mars 2001
Statut
Membre
Dernière intervention
7 septembre 2011
4
l'ecriture donnerait plutot quelque chose comme ça :
range("e" & j(2) : "g" & j(2))
mais ça ne fonctionne pas dans tous les cas (depend de la version excel, du type de donnée recherchée, de la definition de la variable....)

mais c'est quoi ton message d'erreur, quel genre de valeur recherches-tu (caractères, numerique, variant), dois tu la conserver.

peux tu fournir le morceau du code que tu utilise..

Il existe tant de façons de faire en VBA-excel qu'il est assez difficile de répondre sans plus de précisions...
Messages postés
134
Date d'inscription
mercredi 2 mars 2005
Statut
Membre
Dernière intervention
5 avril 2007

j'ai déjà essayé range("e" & j(2) : "g" & j(2)) ça ne marche pas pour Excel 2000 j(2) renvoi "23" si la ligne est 23. Voilà le code entier, le problème don je parle se situe là où j'ai mis
'''''''mauvaise position ds le range reste sur la ligne 1''''''''''''''''''''''''''''''''''''''''''''''
jordinette

Private Sub CmdCalcul_Click()
Dim codeaff As String
Dim j() As String
Dim h() As String


Workbooks("vcogam1").Worksheets("vcogam").Activate
Cells.Select
Selection.NumberFormat = "@"


'récup composé composant et lien de Nomen


Workbooks("vappor1").Worksheets("Nomen").Activate


Cells(2, 1).Select
cptt = 2
cpt = 2
Do While ActiveCell.Value <> ""


h = Split(ActiveCell.Address, "$")

compose = Cells(h(2), 1).Value
composan = Cells(h(2), 2).Value
Lien = Cells(h(2), 3).Value


Workbooks("vcogam1").Worksheets("vcogam").Activate


With Workbooks("vcogam1").Worksheets("vcogam").Range("a1:a7000")
Set c = .Find(composan, LookIn:=xlValues)
If Not c Is Nothing Then
firstaddress = c.Address


Do
j = Split(c.Address, "$")



codeaff = Cells(j(2), 3).Value

'récup du temps
nul = 0

'''''''mauvaise position ds le range reste sur la ligne 1''''''''''''''''''''''''''''''''''''''''''''''
With Workbooks("vcogam1").Worksheets("vcogam").Range("e1:g7000")
Set d = .Find(nul, LookIn:=xlValues)
Do While d = 0
If Not d Is Nothing Then
Set d = .FindNext(d)
If d <> 0 Then
k = Split(d.Address, "$")
Range(k(1) & k(2)).Select
tps = ActiveCell.Value
End If

End If
Loop
End With


'dépose les valeurs dans Ressources
Workbooks("vappor1").Worksheets("Ressources").Activate
Cells.Select
Selection.NumberFormat = "@"
Cells(cpt, 1).Value = compose
Cells(cpt, 2).Value = composan
Cells(cpt, 3).Value = Lien

'là où on trouve code_aff on décen de cpt et on met tps
With Workbooks("vappor1").Worksheets("Ressources").Range("d1:ee1")
Set e = .Find(codeaff, LookIn:=xlValues)
If Not e Is Nothing Then
i = Split(e.Address, "$")
Range(i(1) & i(2)).Select
ActiveCell.Offset(cpt - 1, 0).Select
ActiveCell.Value = tps * Int(Lien)
End If
End With
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Workbooks("vcogam1").Worksheets("vcogam").Activate
'l = Split(c.Address, "$")
'Range(l(1) & l(2)).Select

cpt = cpt + 1
Set c = .FindNext(c) 'si le composé a plusieurs composants


'''''''''''''il ne me trouve plus c.address!!!''''''''''

Loop While Not c Is Nothing And c.Address <> firstaddress
End If
End With
cptt = cptt + 1
Workbooks("vappor1").Worksheets("Nomen").Activate
Cells(cptt, 1).Select


Loop


End Sub
Messages postés
134
Date d'inscription
mercredi 2 mars 2005
Statut
Membre
Dernière intervention
5 avril 2007

range("e" & j(2) & ":" & "g" & j(2))

ca à l'air de marché!
merci