thibaultanguy
Messages postés45Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention16 novembre 2012
-
17 nov. 2011 à 18:49
Utilisateur anonyme -
18 nov. 2011 à 21:38
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
A voir également:
Recherche sur une feuil du classeur et non sur tous les onglets
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 17 nov. 2011 à 18:58
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 17 nov. 2011 à 21:14
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 17 nov. 2011 à 21:16
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
thibaultanguy
Messages postés45Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention16 novembre 2012 17 nov. 2011 à 21:09
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
thibaultanguy
Messages postés45Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention16 novembre 2012 18 nov. 2011 à 09:28
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
thibaultanguy
Messages postés45Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention16 novembre 2012 18 nov. 2011 à 21:25
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