Visual basic

jager57

XLDnaute Nouveau
Bonjour, ´
je suis un débutant en VBA
j´ ai réalisé une macro qui permet de rechercher un texte dans une colonne cela fonctionne
Mais étant donné que mon tableau a au moins 1000 lignes
lorsque quelqu´un tape les premières lettres d´un mot la message box
ne peut pas afficher tout les résultats
comment faire????pour voir tous les résultats

Code:
Sub RecherchePhrases()
'Programme de recherche de phrases suivant critere de saisie

Dim nom, c, msg
Dim recherche As String
Dim NombrePhrasesTrouvées As Integer
NombrePhrasesTrouvées = 0

'Affichage du inputbox pour saisie
nom = Trim(Application.InputBox("Taper un nom", "Recherche"))
'N'execute pas la rechereche si on clique sur Annuler ou si aucune saisie
If nom = False Or nom = "" Then
Exit Sub
End If
'Active la feuille nommé Tabelle1
Sheets("Tabelle1").Activate

'Effectue la recherche dans la plage cellule nommé tableau
For Each c In range("tableau")
If c.Value Like "*" & nom & "*" Then
'Incremente le nombre de phrases trouvés
NombrePhrasesTrouvées = NombrePhrasesTrouvées + 1
'texte trouvé suivant la saisie
recherche = c.Value
'fait une liste des phrases correspondantes a la saisie
msg = msg & recherche & vbTab & vbCrLf
End If
Next
'Affiche tout le resultat
MsgBox NombrePhrasesTrouvées & " phrase(s) trouvé(s) " _
& Chr(10) & Chr(10) & msg, vbInformation, "Resultat de " & "[" & nom & "]"

End SubFichiers attachés essai.xls (30,5 Ko, 1 affichages
 

Gruick

XLDnaute Accro
Re : Visual basic

Bonjour,
Cette démarche m'échappe un peu, car la vocation d'un msgbox n'est pas de lui faire écrire une encyclopédie. Un message n'est pas un roman.
Je préconiserai plutôt la création d'une feuille dédiée au résultat, quite à la supprimer une fois lue.
La solution de JP14 est aussi très intéressante.
Sinon, si tu tiens au msgbox, tu peux saucissonner par paquets de 40 lignes par exemple
Ta variable msg pourra être une variable tableau à une dimension dont tu demanderas l'affichage successif à l'aide d'une boucle.

Gruick
 

Roland_M

XLDnaute Barbatruc
Re : Visual basic

bonsoir

petit prog avec listing résultat de recherche dans une feuille temp

à adapter !

Roland
 

Pièces jointes

  • Classeur1.zip
    21.7 KB · Affichages: 48
  • Classeur1.zip
    21.7 KB · Affichages: 54
  • Classeur1.zip
    21.7 KB · Affichages: 50

Gruick

XLDnaute Accro
Re : Visual basic

Bonjour Mick (?)

Code de débutant, à d'autres !... ou alors d'un surdoué.
Vu que Roland a travaillé sur le sujet, je me suis senti obligé d'aller jusqu'au bout de mon idée. Je livre donc la macro un peu modifiée, qui marche à merveille. J'espère qu'elle t'apportera SATISFACTION

Code:
Sub RecherchePhrases()
'Programme de recherche de phrases suivant critère de saisie
Dim nom, c
Dim msg(2 ^ 16) As String
Dim recherche As String
Dim NombrePhrasesTrouvées As Integer
NombrePhrasesTrouvées = 0
'Affichage du inputbox pour saisie
nom = Trim(Application.InputBox("Taper un nom", "Recherche"))
'N'execute pas la recherche si on clique sur Annuler ou si aucune saisie
If nom = False Or nom = "" Then Exit Sub
'Active la feuille nommé Tabelle1
Sheets("Tabelle1").Activate
'Effectue la recherche dans la plage cellule nommé tableau
For Each c In Range("tableau")
If c.Value Like "*" & nom & "*" Then
'Incremente le nombre de phrases trouvés
NombrePhrasesTrouvées = NombrePhrasesTrouvées + 1
'texte trouvé suivant la saisie
recherche = c.Value
'fait des listes des phrases correspondantes à la saisie par paquet de 36
nbmb = Int(NombrePhrasesTrouvées / 36)
msg(nbmb) = msg(nbmb) & recherche & vbNewLine
End If
Next
'Affiche tout le résultat
For i = 0 To nbmb
MsgBox NombrePhrasesTrouvées & " phrase(s) trouvé(s) " _
& Chr(10) & "Partie " & i + 1 & Chr(10) & Chr(10) & msg(i), vbInformation, "Résultat de " & "[" & nom & "]"
Next i
End Sub


Gruick, Gruick, Gruik, Woooo !
 

Discussions similaires

Réponses
8
Affichages
681

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb