Recherche sur une feuil du classeur et non sur tous les onglets [Résolu]

Signaler
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012
-
 Utilisateur anonyme -
Bonsoir le forum,
J'ai trouvé ce morceau de code qui boucle une recherche sur tous les onglets du classeur actif. Hors je souhaiterais effectuer ma recherche sur la feuil3 uniquement. Voici le code :

[color=green]Private Sub CommandButton1_Click()
Dim F As Worksheet
Dim Plage As Range, C As Range
Dim T As String, Firstaddress As String
Dim x As Integer
ListBox1.Clear
T = Me.TextBox1
If T = "" Then Exit Sub
For Each F In Worksheets
With F
Set Plage = Application.Intersect(.UsedRange.Cells, .Range(.Cells(1, 1), .Cells(.Rows.Count, .Columns.Count)))
End With
Set C = Plage.Find(T, LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
With ListBox1
.AddItem F.Name
For x = 2 To 8
.List(.ListCount - 1, x - 1) = F.Cells(C.Row, x).Text
Next x
.List(.ListCount - 1, 8) = C.Address(False, False)
End With
Set C = Plage.FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
Next F

If ListBox1.ListCount = 0 Then
MsgBox "Le Texte " & T & " n'a pas été trouvé" & vbLf & "Faites un essai sur une partie du nom", vbCritical, Sign
End If
End Sub


J'avoue avoir du mal à comprendre cette partie du code "Set Plage = Application.Intersect(.UsedRange.Cells, .Range(.Cells(1, 1), .Cells(.Rows.Count, .Columns.Count)))"
Peut-être est-ce la d'ou vient mon problème...

Merci de m'aider sur le sujet

eric

10 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,

Veux-tu bien t'efforcer dorénavant de présenter tes bouts de code indentés et entre balises code ? (c'est important).


Pour ta question :
Bé ! au lieu de boucler sur tes feuille, n'en traite qu'une seule !
For Each F In Worksheets
   With F


   end with
Next

devient

With sheets("le_nom_de_ta_feuille")


End with


je suis assez surpris car ta question révèle que tu copies sans réellement comprendre, voire analyser.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Salut,

Quand tu fais:
For Each F In Worksheets


Veut dire qu'il lit toutes les feuilles.
Une manière "grossière" de le faire fonctionner serait:
For Each F In Worksheets
if f.name = "feuil3" then
.....
end if
next f




CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
bé !
si tu es dans le bloc With sheets("le_nom_de_ta_feuille") ,
remplace donc F. par . (le F et le point par un point) !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Veux-tu bien ouvrir ton aide VBA sur l'instruction With ?
Fais-le et tout devrait devenir clair dans ton esprit


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Re:

C'est pas un truc du genre:
TreeView1.Nodes.Item(TreeView1.Nodes.Count - 1).Selected = True


Regarde un peu dans les codes du site tu vas surement trouver des exemples.

Cordialement

CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012

Merci pour vos réponses.
Il est vrai que copier un morceau de code nécessite qu'on le comprenne avant de s'en servir. Le prb, c'est que j'ai essayé de le faire... Par exemple en essayant ceci en début de code :Dim F As ("feuil3") etc...
Je sais,je sais, petit joueur....
Par contre, en portant vos correction, je comprends maintenant un peu mieux le problème, bien que le code bloque à ce niveau :.AddItem F.Name
Il ne reconnait pas la variable!
Je sais également que...je suis nul... Mais je m'accroche
Bien à vous et merci encore


eric
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012

Merci pour vos réponses.
Il faut croire que ton ucfoutu est beaucoup moins foutue que la mienne !! J'y suis enfin arrivé grâce à vous. En effet, on pinaille souvent pour des broutilles et lorsque l'on a la solution, elle paraît évidente... Je vais donc pouvoir finaliser mon projet.
Pour info, je vais rechercher aujourd'hui comment récupérer le numéro de ligne ou se trouve la cellule active de ma feuil3 (activée par le code de recherche ci-dessus) pour renvoyer cette info à mon treeview. Le code suivant fonctionne, mais il faudrait que je l'affecte pour chaque cellule en changeant la valeur d'Item du treview ... Je pense qu'il y a plus simple..:

1) Private Sub Worksheet_SelectionChange(ByVal Target As Range)
2)If Selection.Value = "Nom recherché" Then UserForm1.TreeView1.Nodes.Item(46).EnsureVisible
3) End sub

Merci pour votre aide et merci à ucfoutu qui malgré son agacement reste de bon service !!!
eric
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012

Bon j'y suis arrivé avec cette simple ligne de code :
1)If Selection.Select Then UserForm1.TreeView1.Nodes.Item(ActiveCell.Row).EnsureVisible

Par contre, comment peut-on activer la ligne du treeview par code comme si l'on cliquait dessus?

Hum, j'espère avoir été compris....

eric
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012

Merci Acive d'avoir pris la peine de me répondre.
Après avoir bien cherché, une partie de mon code était mal placée. Antérieure au déroulement du treeview au lieu de postérieure...
Une petite usine à gaz en somme mais qui fonctionne vraiment bien.
Un merci ne suffit pas pour votre aide, mais une profonde reconnaissance s'impose.
A bientôt
eric

Salut,

Tu vois? et nous sommes tous bénévoles en plus.

une profonde reconnaissance s'impose

Juste le fait que tu utilises les balises quand tu nous envoie du code suffit (troisième icône à partir de droite)



CF2i - Guadeloupe
Ingénierie Informatique