[VBA] Recherche sur Toutes les feulles d'un classeur

Le
penelope
bonjour

j'aurais besoin d'une explication sur un bout de code

j'aurais besoin d'effectuer une recherche sur toutes les feuilles d'un
classeur.

j'avais dans une autre macro, un bout de code que je comptais
réutiliser

.
With Workbooks(i & ".htm").Worksheets(1).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse)
If Not c Is Nothing Then
Range(c.Address).Activate
ActiveCell.Offset(1, 0).Activate
..

mais on est obligé de passer en parametre l'indice de la feuille ???

ca veut dire qu'il faut que je compte toutes les feuilles avant de
lancer la recherche ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5128501
Bonjour,

Exemples de recherche multi-feuilles:

Sub chercheFindMultiFeuillesValeur()
x = "ABCD"
For Each s In ActiveWorkbook.Sheets
With Sheets(s.Name).Cells
Set c = .Find(x, LookIn:=xlValues)
If Not c Is Nothing Then
premier = c.Address
Do
c.Interior.ColorIndex = 4
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
End With
Next s
End Sub

ou

x = "ABCD"
For Each s In Array("Feuil1", "Feuil2")
With Sheets(s).Cells
Set c = .Find(x, LookIn:=xlValues)
If Not c Is Nothing Then
premier = c.Address
Do
c.Interior.ColorIndex = 4
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
End With
Next s
End

JB

On 15 jan, 08:52, penelope wrote:
bonjour

j'aurais besoin d'une explication sur un bout de code

j'aurais besoin d'effectuer une recherche sur toutes les feuilles d'un
classeur.

j'avais dans une autre macro, un bout de code que je comptais
réutiliser

....
With Workbooks(i & ".htm").Worksheets(1).Cells
    Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
        MatchCase:úlse)
    If Not c Is Nothing Then
Range(c.Address).Activate
    ActiveCell.Offset(1, 0).Activate
.....

mais on est obligé de passer en parametre l'indice de la feuille ???

ca veut dire qu'il faut que je compte toutes les feuilles  avant de
lancer la recherche ?

Merci  


FFO
Le #5128491
Salut penelope

Pour éviter de compter toutes les feuilles pour déterminer l'indice de
l'onglet qui t'interresse tu peux mettre en préambule ce bout de code :

For j = 1 To Workbooks(i & ".htm").Sheets.Count
If Sheets(j).Name = "Nom" Then
Indice = j
Exit For
End If
Next

Puis de corriger ta ligne :

With Workbooks(i & ".htm").Worksheets(Indice).Cells

Celà devrait faire

Dis moi !!!


bonjour

j'aurais besoin d'une explication sur un bout de code

j'aurais besoin d'effectuer une recherche sur toutes les feuilles d'un
classeur.

j'avais dans une autre macro, un bout de code que je comptais
réutiliser

.....
With Workbooks(i & ".htm").Worksheets(1).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse)
If Not c Is Nothing Then
Range(c.Address).Activate
ActiveCell.Offset(1, 0).Activate
......

mais on est obligé de passer en parametre l'indice de la feuille ???

ca veut dire qu'il faut que je compte toutes les feuilles avant de
lancer la recherche ?

Merci



Ellimac
Le #5128481
Bonjour,

Le code suivante entre la valeur 1 en A1 de toutes les feuilles :

Sub Toto()
For cpt = 1 To Sheets.Count
Sheets(cpt).Range("a1") = 1
Next
End Sub

Camille


bonjour

j'aurais besoin d'une explication sur un bout de code

j'aurais besoin d'effectuer une recherche sur toutes les feuilles d'un
classeur.

j'avais dans une autre macro, un bout de code que je comptais
réutiliser

.....
With Workbooks(i & ".htm").Worksheets(1).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse)
If Not c Is Nothing Then
Range(c.Address).Activate
ActiveCell.Offset(1, 0).Activate
......

mais on est obligé de passer en parametre l'indice de la feuille ???

ca veut dire qu'il faut que je compte toutes les feuilles avant de
lancer la recherche ?

Merci



papou
Le #5128461
Bonjour
Non, tu n'auras pas à compter tes feuilles.
Modifie comme ceci :

Dim Nbf As Integer
For Nbf = 1 To Workbooks(i & ".htm").Sheets.Count
With Workbooks("i & ".htm"").Worksheets(Nbf).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell, _
LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse)
End With
If Not c Is Nothing Then
'.....etc etc...
End If
Next Nbf


Par contre petite remarque pour la suite du code( ...etc etc...) : tu
devrais éviter la sélection de cellules.
Ca sera d'autant plus délicat que tu dois parcourir toutes tes feuilles,
alors attention aussi à bien désigner la feuille sur laquelle tu vas
effectuer des opérations.

Cordialement
Pascal


<penelope> a écrit dans le message de news:

bonjour

j'aurais besoin d'une explication sur un bout de code

j'aurais besoin d'effectuer une recherche sur toutes les feuilles d'un
classeur.

j'avais dans une autre macro, un bout de code que je comptais
réutiliser

....
With Workbooks(i & ".htm").Worksheets(1).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse)
If Not c Is Nothing Then
Range(c.Address).Activate
ActiveCell.Offset(1, 0).Activate
.....

mais on est obligé de passer en parametre l'indice de la feuille ???

ca veut dire qu'il faut que je compte toutes les feuilles avant de
lancer la recherche ?

Merci


FFO
Le #5128451
Rebonjour penelope

en relisant ta demande tu souhaites peut être traiter toutes les feuilles

Je te propose dans cette perspective de modifier ton code ainsi :

For j = 1 To Workbooks(i & ".htm").Sheets.Count
With Workbooks(i & ".htm").Worksheets(j).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse)
If Not c Is Nothing Then
Range(c.Address).Activate
ActiveCell.Offset(1, 0).Activate
Next

Celà devrait faire

Dis moi !!!!



bonjour

j'aurais besoin d'une explication sur un bout de code

j'aurais besoin d'effectuer une recherche sur toutes les feuilles d'un
classeur.

j'avais dans une autre macro, un bout de code que je comptais
réutiliser

.....
With Workbooks(i & ".htm").Worksheets(1).Cells
Set c = .Find(what:="Libellé", After:¬tiveCell,
LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse)
If Not c Is Nothing Then
Range(c.Address).Activate
ActiveCell.Offset(1, 0).Activate
......

mais on est obligé de passer en parametre l'indice de la feuille ???

ca veut dire qu'il faut que je compte toutes les feuilles avant de
lancer la recherche ?

Merci



Publicité
Poster une réponse
Anonyme