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

VBA: Trouvez une formule dans une feuille

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

MJ13

XLDnaute Barbatruc
Bonjour à tous

En utilisant l'enregistreur de macros, j'ai ce code pour trouver la formule =ligne() dans une feuille.

Voici le code généré sur XL2007, pour les autres versions, il me semble qu'il faille retirer , SearchFormat:=False:

Code:
Range("A1").Select
Cells.Find(What:="=LIGNE()", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=True, SearchFormat:=False).Activate

Or, si je lance la macro, il me met une erreur91, Variable objet ou variable bloc width non défini. Je ne comprend plus !

Merci pour votre aide.
 
Re : VBA: Trouvez une formule dans une feuille

Bonjour Roland


c'est quoi ceci
"=LIGNE()"

C'est la formule que je cherche sur ma feuille qui indique le numéro de ligne de la cellule active.

Le but est de trouver dans une feuille cette formule car je peux avoir des noms avec ligne par exemple.

Merci.
 
Re : VBA: Trouvez une formule dans une feuille

re:

essayer comme ceci

Dim R As Range
Range("A1").Select
Set R = Cells.Find(What:="LIGNE()", After:=ActiveCell, LookIn:=xlFormulas, _
lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False)

et ...
If Not R Is Nothing Then 'suite si ok
 
Re : VBA: Trouvez une formule dans une feuille

re:

salut pierrejean ! tu as raison ! on l'oublie facilement !

ceci fonctionne chez moi (avec =LIGNE() simplement dans une cellule)

Code:
Dim R As Range
Range("A1").Select
Set R = Cells.Find(What:="=ROW()", After:=ActiveCell, LookIn:=xlFormulas, _
        lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=True, SearchFormat:=False)
If Not R Is Nothing Then
   MsgBox R.Row & vbLf & R.Column
End If
 
Dernière édition:
Re : VBA: Trouvez une formule dans une feuille

Re Roland, Bonjour Pierre-jean

Roland: Ok cela à l'air de fonctionner.

Pierre-Jean: Merci pour l'astuce (je pense que je vais m'en rappeller 🙄).

Voici un fichier avec vos 2 codes (alt+F8 pour lancer les macros).

Bonne journée 🙂.
 

Pièces jointes

Re : VBA: Trouvez une formule dans une feuille

Re

Attention: Je preconise tout de même le lookat:=xlWhole
En effet si une recherche precedente a été faite avec xlPart la nouvelle se fera egalement avec xlPart
De même il est prudent de s'assurer que la recherche a abouti (genre not is nothing) sous peine de bug si la recherche n'a pas été fructueuse
 
Re : VBA: Trouvez une formule dans une feuille

Re PierreJean

Ok bien noté. EN effet si on a choisi une autre option dans la recherche, il y a un bug. Donc dans mon cas, ce serait:

Code:
Cells.Find(What:="=row()", LookIn:=xlFormulas, lookat:=xlWhole).Select

Encore Merci 😉.
 
Re : VBA: Trouvez une formule dans une feuille

re:

voir avec cette macro pour avoir le nombre d'occurences !
que l'on peut d'ailleurs mettre en tableau si on souhaite avoir les adresses !?

Code:
Sub EssaiFind2()
Dim R As Range, TotFind As Long, SuiteAdres As String
Range("A1").Select
With Cells
 Set R = .Find(What:="=ROW()", After:=ActiveCell, LookIn:=xlFormulas, _
     lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
     MatchCase:=True, SearchFormat:=False)
 If Not R Is Nothing Then
    SuiteAdres = R.Address
    Do: TotFind = TotFind + 1: Set R = .FindNext(R)
    Loop While Not R Is Nothing And R.Address <> SuiteAdres
 End If
End With
MsgBox TotFind
End Sub
 
Re : VBA: Trouvez une formule dans une feuille

Re Roland

Merci pour ta contribution

Pour avoir une liste des formules dans des variables qui pourront me servir pour boucler sur d'autres macros, je viens de faire ce code à partir du tiens.

J'aime bien ces petits codes sympas🙂.

Code:
Sub EssaiFind2()
Dim R As Range, TotFind As Long, SuiteAdres As String
Range("A1").Select
Dim adr(1000)
Stop
With Cells
 Set R = .Find(What:="=ROW()", After:=ActiveCell, LookIn:=xlFormulas, _
     lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
     MatchCase:=True, SearchFormat:=False)
 If Not R Is Nothing Then
    SuiteAdres = R.Address
        Do: TotFind = TotFind + 1:  N = N + 1: adr(N) = R.Address: Set R = .FindNext(R)
     Loop While Not R Is Nothing And R.Address <> SuiteAdres
 End If
End With
For i = 1 To N
MsgBox adr(i)
Next i
MsgBox TotFind
End Sub
 
- 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

Discussions similaires

Réponses
2
Affichages
589
Réponses
1
Affichages
348
Réponses
3
Affichages
640
A
Réponses
4
Affichages
669
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…