Recherche et copie en vba

4 réponses
Avatar
man77
Bonjour,Bonjour,
J'ai encore besoin d'aide... Et oui les jours passent mais la connaissance ne suit pas...
Voilà, j'ai mais un optionbutton dans ma colonne, ici en (I15). Je souhaite récupérer le num de la colonne donc 15, lui attribuer une autre colonne soit (c15), lire la cellule (c15), stocker cette valeur dans tiroir et effectuer une recherche et une copie...
J'ai donc écris :
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
actlign = ActiveCell.Row
Tiroir = ["c" & actlign]
With Worksheets("eone")
Set CelluleTrouvée = .Range("d4:d122").Find(What:=Tiroir, _
LookIn:=xlValues, LookAt:=xlWhole)
If CelluleTrouvée Is Nothing Then
MsgBox "pas trouvé"
Else
Ligne = CelluleTrouvée.Row
Col = CelluleTrouvée.Column + 1
toto = .Cells(Ligne, Col).Value
MsgBox ("trouvé : ligne = " & Ligne & " , colonne = " & Col)
End If
End With
Mais ça plante... dans actlihn j'ai bien "15" mais dans tiroir ...rien et ça plante.
Merci de votre aide.
@++

4 réponses

Avatar
Géréginéflo
Bonjour,

Ceci : tiroir = "c" & actlign
à la place de celà : Tiroir = ["c"& actlign]
et tiroir contiendra la valeur

Bonne journée

Le 05/10/2011 13:17, man77 a écrit :
Bonjour,Bonjour,
J'ai encore besoin d'aide... Et oui les jours passent mais la connaissance ne
suit pas...
Voilà, j'ai mais un optionbutton dans ma colonne, ici en (I15). Je souhaite
récupérer le num de la colonne donc 15, lui attribuer une autre colonne soit
(c15), lire la cellule (c15), stocker cette valeur dans tiroir et effectuer une
recherche et une copie...
J'ai donc écris :
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
actlign = ActiveCell.Row
Tiroir = ["c"& actlign]
With Worksheets("eone")
Set CelluleTrouvée = .Range("d4:d122").Find(What:=Tiroir, _
LookIn:=xlValues, LookAt:=xlWhole)
If CelluleTrouvée Is Nothing Then
MsgBox "pas trouvé"
Else
Ligne = CelluleTrouvée.Row
Col = CelluleTrouvée.Column + 1
toto = .Cells(Ligne, Col).Value
MsgBox ("trouvé : ligne = "& Ligne& " , colonne = "& Col)
End If
End With
Mais ça plante... dans actlihn j'ai bien "15" mais dans tiroir ...rien et ça
plante.
Merci de votre aide.
@++
Avatar
MichD
Bonjour,

A )
Pour corriger cette erreur
Tiroir = ["c" & actlign]
Modifie comme ceci :
Tiroir = range("c" & actlign)

Quand tu utilises les [ ] , tu ne peux pas utiliser une variable à l'intérieur des crochets. Il te faudrait utiliser la
propriété "Evaluate" de l'objet "Application" comme ceci:
Tiroir = Application.Evaluate("A" & actilign)

Je te suggère de t'en tenir à Range(), c'est plus facile !

B ) Je souhaite récupérer le num de la colonne donc 15,
****Je suppose que c'est le nom de la ligne que tu veux récupérer ?
Si oui, pour récupérer la première ligne et la première colonne sur laquelle
repose le contrôle "CheckBox"
'---------------------------------
Private Sub CheckBox1_Click()
Dim A As String, B As String
A = Me.CheckBox1.TopLeftCell.Address
B = Me.CheckBox1.BottomRightCell.Address

'Adresse des cellules où se retrouvent le Checkbox
MsgBox Range(A, B).Address

MsgBox "La première ligne : " & Range(A, B)(1, 1).Row & vbCrLf & _
"la première colonne est : " & Range(A, B)(1, 1).Column

End Sub
'---------------------------------

MichD
------------------------------------------
"man77" a écrit dans le message de groupe de discussion :

Bonjour,Bonjour,
J'ai encore besoin d'aide... Et oui les jours passent mais la connaissance ne
suit pas...
Voilà, j'ai mais un optionbutton dans ma colonne, ici en (I15). Je souhaite
récupérer le num de la colonne donc 15, lui attribuer une autre colonne soit
(c15), lire la cellule (c15), stocker cette valeur dans tiroir et effectuer une
recherche et une copie...
J'ai donc écris :
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
actlign = ActiveCell.Row
Tiroir = ["c" & actlign]
With Worksheets("eone")
Set CelluleTrouvée = .Range("d4:d122").Find(What:=Tiroir, _
LookIn:=xlValues, LookAt:=xlWhole)
If CelluleTrouvée Is Nothing Then
MsgBox "pas trouvé"
Else
Ligne = CelluleTrouvée.Row
Col = CelluleTrouvée.Column + 1
toto = .Cells(Ligne, Col).Value
MsgBox ("trouvé : ligne = " & Ligne & " , colonne = " & Col)
End If
End With
Mais ça plante... dans actlihn j'ai bien "15" mais dans tiroir ...rien et ça
plante.
Merci de votre aide.
@++
Avatar
man77
MichD a écrit le 05/10/2011 à 15h06 :
Bonjour,

A )
Pour corriger cette erreur
Tiroir = ["c" & actlign]
Modifie comme ceci :
Tiroir = range("c" & actlign)

Quand tu utilises les [ ] , tu ne peux pas utiliser une variable à
l'intérieur des crochets. Il te faudrait utiliser la
propriété "Evaluate" de l'objet "Application"
comme ceci:
Tiroir = Application.Evaluate("A" & actilign)

Je te suggère de t'en tenir à Range(), c'est plus facile !

B ) Je souhaite récupérer le num de la colonne donc 15,
****Je suppose que c'est le nom de la ligne que tu veux récupérer
?
Si oui, pour récupérer la première ligne et la
première colonne sur laquelle
repose le contrôle "CheckBox"
'---------------------------------
Private Sub CheckBox1_Click()
Dim A As String, B As String
A = Me.CheckBox1.TopLeftCell.Address
B = Me.CheckBox1.BottomRightCell.Address

'Adresse des cellules où se retrouvent le Checkbox
MsgBox Range(A, B).Address

MsgBox "La première ligne : " & Range(A, B)(1, 1).Row
& vbCrLf & _
"la première colonne est : " & Range(A, B)(1, 1).Column

End Sub
'---------------------------------

MichD
------------------------------------------
"man77" a écrit dans le message de groupe de discussion :


Bonjour,Bonjour,
J'ai encore besoin d'aide... Et oui les jours passent mais la connaissance ne
suit pas...
Voilà, j'ai mais un optionbutton dans ma colonne, ici en (I15). Je
souhaite
récupérer le num de la colonne donc 15, lui attribuer une autre
colonne soit
(c15), lire la cellule (c15), stocker cette valeur dans tiroir et effectuer une
recherche et une copie...
J'ai donc écris :
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
actlign = ActiveCell.Row
Tiroir = ["c" & actlign]
With Worksheets("eone")
Set CelluleTrouvée = .Range("d4:d122").Find(What:=Tiroir, _
LookIn:=xlValues, LookAt:=xlWhole)
If CelluleTrouvée Is Nothing Then
MsgBox "pas trouvé"
Else
Ligne = CelluleTrouvée.Row
Col = CelluleTrouvée.Column + 1
toto = .Cells(Ligne, Col).Value
MsgBox ("trouvé : ligne = " & Ligne & " , colonne
= " & Col)
End If
End With
Mais ça plante... dans actlihn j'ai bien "15" mais dans tiroir
...rien et ça
plante.
Merci de votre aide.
@++


Merci pout votre aide.
Ce que je voulais était bien :
Tiroir = Range("c" & actlign)

Merci et à bientôt pour de nouvelles aventures...
@+
Avatar
Gloops
man77 a écrit, le 05/10/2011 13:17 :
Tiroir = ["c"& actlign]



On peut aussi dire Cells(actlign, 3)

Dans certains cas c'est commode, le 3 peut être le résultat d'un calc ul.