Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Chercher des cellules dans différents classeurs

  • Initiateur de la discussion Initiateur de la discussion benoa
  • 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 !

B

benoa

Guest
Bonjour,

Je souhaiterais trouver dans deux classeurs différents la cellule contenant la chaîne de caractère "MaChaine"

En fait, pour la recherche dans un même classeur, j'utilise les formules suivantes :

Set Cell1 = Sheets("feuil1").Cells.Find(What:="MaChaine", after:=Cells(1, 1), MatchCase:=False)
Set Cell2 = Sheets("feuil2").Cells.Find(What:="MaChaine", after:=Cells(1, 1), MatchCase:=False)​

Suffit-il de préciser devant la commande ?:

Set Cell1 = WorkSheet("MonClasseur.xls").Sheets("feuil1").Cells.Find(What:="MaChaine", after:=Cells(1, 1), MatchCase:=False)​

Pour info, la chaine de caractère est toujours présente dans les fichiers.

Merci à tous pour vos suggestions.
 
Re : Chercher des cellules dans différents classeurs

Bonjour,

remplace plutôt :
Code:
WorkSheet("MonClasseur.xls")
par cela :
Code:
Workbooks("MonClasseur.xls").

et même punition pour l'argument "after", rajouter les objets classeur et feuille :
Code:
after:=Cells(1, 1)

bonne journée
@+
 
Re : Chercher des cellules dans différents classeurs

Ok j'ai changé comme tu m'a dit :

Set Cell1 = Workbooks("MonClasseur.xls").Sheets("feuil1").Cells.Find(What:="MaChaine", after:=Workbooks("MonClasseur.xls").Sheets("feuil1").Cells(1, 1), MatchCase:=False)​

Pourtant il m'indique une erreur '9' : "l'indice n'appartient pas à la selection", pourtant MaChaine appartient bien à MonClasseur.

Quelle peut être la raison de cette erreur?

Cordialement
 
Re : Chercher des cellules dans différents classeurs

Bonjour à tous

Il faut que les deux classeurs soient ouverts.
Code:
Sub a()
Dim j As Byte, i As Byte
Dim t(), cell1 As Range, cell2 As Range
ReDim t(1 To Workbooks.Count)
For j = 1 To UBound(t)
t(j) = Workbooks(j).Name
Next
Set cell1 = Workbooks(t(1)).Sheets(1).Cells.Find(What:="toto", after:=Cells(1, 1), MatchCase:=False)
Set cell2 = Workbooks(t(2)).Sheets(1).Cells.Find(What:="toto", after:=Cells(1, 1), MatchCase:=False)
MsgBox cell1.Address
MsgBox cell2.Address
End Sub
 
Re : Chercher des cellules dans différents classeurs

Re,

tu as une espace dans le nom de la feuille...
Code:
after:=Workbooks("MonClasseur.xls").Sheets("feuil1 ").

Edition : bonjour staple, peut être préciser les noms classeur et feuille de l'argument "after", comme indiqué post #2
 
Dernière édition:
Re : Chercher des cellules dans différents classeurs

Non ce n'est pas ça, j'ai vérifier le nom des deux classeurs, le nom des feuilles correspondantes, tout est correctement orthographié.
 
Re : Chercher des cellules dans différents classeurs

Re, salut Pierrot 93

benoa
J'ai testé avant de soumettre (et cela fonctionne ici)
(avec deux classeurs ouverts dans la même instance avec la valeur toto dans la feuille 1 (en A1 pour l'un et B4 pour l'autre)
Tout comme cette variante
Code:
Sub test()
chercher "toto"
End Sub
Code:
Private Sub chercher(chaine As String)
Dim j As Byte, i As Byte, Message As String
Dim t(), cell1 As Range, cell2 As Range
ReDim t(1 To Workbooks.Count)
For j = 1 To UBound(t)
t(j) = Workbooks(j).Name
Next
Set cell1 = Workbooks(t(1)).Sheets(1).Cells.Find(What:=chaine, after:=Cells(1, 1), MatchCase:=False)
Set cell2 = Workbooks(t(2)).Sheets(1).Cells.Find(What:=chaine, after:=Cells(1, 1), MatchCase:=False)
Titre = "valeur cherchée: " & chaine & vbCrLf
Message = "Trouvée dans :" & vbCrLf
Message = Message & t(1) & ": " & cell1.Address(0, 0) & vbCrLf
Message = Message & t(2) & ": " & cell2.Address(0, 0) & vbCrLf
MsgBox Message, vbInformation, Titre
End Sub
 
Re : Chercher des cellules dans différents classeurs

Re

La preuve en image 😉

Et en tenant compte de la pertinente remarque de Pierrot93, une variante avec ajoiut de nom de la feuille en paramètre
Code:
Private Sub chercher(nomfeuille As String, chaine As String)
Dim j As Byte, i As Byte, Message As String
Dim t(), cell1 As Range, cell2 As Range
ReDim t(1 To Workbooks.Count)
For j = 1 To UBound(t)
t(j) = Workbooks(j).Name
Next
    With Workbooks(t(1)).Sheets(1)
    Set cell1 = .Cells.Find(What:=chaine, after:=.[A1], MatchCase:=False)
    End With
    With Workbooks(t(2)).Sheets(1)
    Set cell2 = .Cells.Find(What:=chaine, after:=.[A1], MatchCase:=False)
    End With
Titre = "valeur cherchée: " & chaine & vbCrLf
Message = "Trouvée dans :" & vbCrLf
Message = Message & t(1) & ": " & cell1.Address(0, 0) & vbCrLf
Message = Message & t(2) & ": " & cell2.Address(0, 0) & vbCrLf
MsgBox Message, vbInformation, Titre
End Sub

Code:
Sub test()
chercher "Feuil1", "toto"
End Sub
 
Dernière édition:
Re : Chercher des cellules dans différents classeurs

Ok ça marche la recherche marche pour moi également, cependant, après débogage, j'ai une nouvelle erreur '91' : Variable de objet ou variable de bloc With non défini.


Dim Cell As Range, lig As Double
Set Cell = Workbooks("MonClasseur.xls").Sheets("feuil1").Cells.Find(What:=MaChaine, after:=Cells(1, 1), MatchCase:=False)
lig = Cell.Row


Pourtant j'ai bien déclarer l'ensemble de mes variables. Comment cela est possible?
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
411
Réponses
2
Affichages
589
Réponses
9
Affichages
884
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
615
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…