Excel 2007: Chercher valeur d'1 cellule dans plusieurs feuilles
Résolu
cs_douda06
Messages postés
68
Statut
Membre
-
cs_douda06 Messages postés 68 Statut Membre -
cs_douda06 Messages postés 68 Statut Membre -
Bonjour,
Je voudrai svp savoir comment avec VBA, faire une condition sur une chaîne de caractère, en cherchant dans toutes les feuilles du classeur et en cherchant après dans toutes les colonnes de la première ligne.
J'ai essayé plusieurs choses mais ça ne marche pas:
Pourquoi ça me met l'erreur "La methode 'Range' de l'objet '_Worksheet' a échoué ?
SOS merci d'avance ^^
Je voudrai svp savoir comment avec VBA, faire une condition sur une chaîne de caractère, en cherchant dans toutes les feuilles du classeur et en cherchant après dans toutes les colonnes de la première ligne.
J'ai essayé plusieurs choses mais ça ne marche pas:
For Each ws In ActiveWorkbook.Worksheets
clom_num = ws.Range("A1").End(xlToRight).Column
For Chx = 1 To clom_num
If ws.Cells(1, Chx).Value = "Pick List Name" Then
clnm_name = ws.Cells(2, Chx).Address
End If
Next
With ws.Range("clnm_name:clnm_name").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Liste
.IgnoreBlank = True
.InCellDropdown = True
End With
Pourquoi ça me met l'erreur "La methode 'Range' de l'objet '_Worksheet' a échoué ?
SOS merci d'avance ^^
A voir également:
- Excel 2007: Chercher valeur d'1 cellule dans plusieurs feuilles
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
4 réponses
Bonjour,
clnm_name étant une variable, il convient de ne pas la placer entre guillemets. Au lieu de
Sinon, plutôt que de faire colonne par colonne, tu pourrais utiliser la méthode find pour te renvoyer ton objet Range :
Cordialement,
Franck
clnm_name étant une variable, il convient de ne pas la placer entre guillemets. Au lieu de
"clnm_name:clnm_name":
clnm_name & ":" & clnm_name
Sinon, plutôt que de faire colonne par colonne, tu pourrais utiliser la méthode find pour te renvoyer ton objet Range :
Dim MyRange As Range
For Each ws In ActiveWorkbook.Worksheets
clom_num = ws.Range("A1").End(xlToRight).Column
Set MyRange = ws.Range(Cells(1, 1), Cells(1, clom_num)).Cells.Find("Pick List Name")
If Not MyRange Is Nothing Then
'Ici on a trouvé "Pick List Name"
MsgBox MyRange.Address
Else
'Ici on n'a pas trouvé
End If
Next
Cordialement,
Franck
Bonjour pijaku,
Merci pour ta réponse, j'ai testé la méthode Find, mais ça me donne toujours la même erreur lors de l'exécution sur cette ligne :
Set MyRange = ws.Range(Cells(1, 1), Cells(1, clom_num)).Cells.Find("Pick List Name")
Erreur :La methode 'Range' de l'objet '_Worksheet' a échoué
est ce que ça a rapport avec le "ws" ?
Merci pour ta réponse, j'ai testé la méthode Find, mais ça me donne toujours la même erreur lors de l'exécution sur cette ligne :
Set MyRange = ws.Range(Cells(1, 1), Cells(1, clom_num)).Cells.Find("Pick List Name")
Erreur :La methode 'Range' de l'objet '_Worksheet' a échoué
est ce que ça a rapport avec le "ws" ?
Essayez ceci :
Cordialement,
Franck
Dim MyRange As Range, ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
With ws
clom_num = .Range("A1").End(xlToRight).Column
Set MyRange = .Range(.Cells(1, 1), .Cells(1, clom_num)).Cells.Find("Pick List Name")
If Not MyRange Is Nothing Then
'Ici on a trouvé "Pick List Name"
MsgBox MyRange.Address
Else
'Ici on n'a pas trouvé
End If
End With
Next
Cordialement,
Franck
J'ai trouvé comment faire à l'aide de la méthode Find .. finalement hihi .. voila la réponse:
Merci pijaku :):)
For Each ws In ActiveWorkbook.Sheets
Set MyRange= ws.Rows(1).Find("Pick List Name", , xlValues, xlWhole)
If Not MyRange Is Nothing Then
With ws.Columns(MyRange.Column).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Liste
.InCellDropdown = True
End With
End If
Next ws
Merci pijaku :):)
De rien...
Alors, oui, mais...
Dans ton cas,
A ta place j'utiliserais le dernier code que je t'ai donné, --> ICI <--
Pourquoi?
Parce que lorsque tu utilises la méthode find, Excel "enregistre" certains de ces paramètres, et notamment LookIn et LookAt (Voir ==> ICI <==)
Comme tu ne spécifies rien, les valeurs par défaut (qui sont
Alors, oui, mais...
Dans ton cas,
xlvalueset
xlwholene me semblent pas indispensables...
A ta place j'utiliserais le dernier code que je t'ai donné, --> ICI <--
Pourquoi?
Parce que lorsque tu utilises la méthode find, Excel "enregistre" certains de ces paramètres, et notamment LookIn et LookAt (Voir ==> ICI <==)
Comme tu ne spécifies rien, les valeurs par défaut (qui sont
xlValueset
xlWhole) te conviennent tout à fait... Cela t'évitera de te creuser la tête une éternité la prochaine fois que tu utilises Find et que cela ne fonctionne pas.......