XL 2016 recherche de mots

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 !

finarobert

XLDnaute Junior
Supporter XLD
bonsoir. Encore un problème qui m'échappe. Voir le fichier Excel qui accompagne. En onglet 1 intitulé texte de base, on trouve des phrases qui s'écrivent sur 2 lignes et qui commencent par Essai.. En onglet 2 intitulé mots recherchés je mets une liste de mots que je recherche dans ces textes. En onglet 3 intitulé Solution pour chaque mot recherché quand je le trouve, je copie la phrase (le mot est dans la deuxième ligne donc je copie la ligne précédente et la ligne qui contient le mot que j'ai mis en Gras. Le fichier est un exemple complet
est ce possible?
merci beaucoup
Robert
 

Pièces jointes

bonsoir. Encore un problème qui m'échappe. Voir le fichier Excel qui accompagne. En onglet 1 intitulé texte de base, on trouve des phrases qui s'écrivent sur 2 lignes et qui commencent par Essai.. En onglet 2 intitulé mots recherchés je mets une liste de mots que je recherche dans ces textes. En onglet 3 intitulé Solution pour chaque mot recherché quand je le trouve, je copie la phrase (le mot est dans la deuxième ligne donc je copie la ligne précédente et la ligne qui contient le mot que j'ai mis en Gras. Le fichier est un exemple complet
est ce possible?
merci beaucoup
Robert
l'idéal serait qu'à partir de l'onglet 2 qui possède les lots recherchés, on lance une macro qui monte l'onglet 3
merci
Robert
 
Bonjour finarobert, le forum,

Voyez le fichier joint et cette macro dans le code de la feuille "solution" :
VB:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Activate()
Dim critere As Range, crit1$, L%, crit2$, lig&, i&, c As Range, p%
Application.ScreenUpdating = False
Columns(1).Clear 'RAZ
For Each critere In Sheets("mots recherchés").[A1].CurrentRegion.Offset(1)
    crit1 = Trim(critere)
    If crit1 <> "" Then
        L = Len(crit1)
        crit2 = "*" & crit1 & "*"
        lig = lig + 1
        With Cells(lig, 1)
            .Font.Bold = True 'gras
            .Font.Color = vbBlue 'bleu
            .Font.Size = 14 'taille
            .Value = crit1
        End With
        lig = lig + 1
        With Sheets("texte de base").[A1].CurrentRegion
            For i = 2 To .Rows.Count Step 2
                If Application.CountIf(.Cells(i, 1).Resize(2), crit2) Then
                    Cells(lig, 1).Resize(2) = .Cells(i, 1).Resize(2).Value 'copie les valeurs
                    For Each c In Cells(lig, 1).Resize(2)
                        Do
                            p = InStr(p + 1, c, crit1)
                            If p Then
                                With c.Characters(p, L)
                                    .Font.Bold = True 'gras
                                    .Font.Size = 14 'taille
                                End With
                            Else
                                Exit Do 'sort de la boucle
                            End If
                        Loop
                    Next c
                    lig = lig + 2
                End If
            Next i
        End With
    End If
Next critere
End Sub
Elle se déclenche quand on active la feuille.

Pour tester j'ai recopié la plage A2:A15 de la 1ère feuille sur 14 000 lignes, la macro s'exécute chez moi en 3,8 secondes.

A+
 

Pièces jointes

Juste cliquer sur son onglet en bas de la fenêtre Excel. La touche F5 n'a jamais fait partir une macro !
ok.....et si ma liste de mots recherchés vient d'un autre fichier et que j'y vos des doublons. Puis je enlever ces doublons automatiquement avant d'avancer les solutions de l'onglet suivant (pour ne pas trouver plusieurs fois la même chose?
merci par avance
Robert
 

Pièces jointes

Utilisez la commande Supprimer les doublons du menu Données.
bonsoir. On m'a envoyé un gros fichier pour tester mais ça coince. Dans l'onglet base de données chaque donnée est sur deux lignes, la première commence par sp et la seconde par c. On cherche dans cette deuxième ligne le "mot" de l'onglet précédent, s'il est; on copie dans le troisième onglet la ligne supérieure qui commence par sp et la ligne du dessous qui commence par c. Orle fichier commence par une ligne en c donc pas de sp et plusieurs lignes dans le tableau commencent par s. Bon si cela est embêtant, on peut laisser tomber, je ne veux pas vous embeter plus. Cordialement Robert
le fichier est trop volumineux (7,5M)
 
bonsoir. On m'a envoyé un gros fichier pour tester mais ça coince. Dans l'onglet base de données chaque donnée est sur deux lignes, la première commence par sp et la seconde par c. On cherche dans cette deuxième ligne le "mot" de l'onglet précédent, s'il est; on copie dans le troisième onglet la ligne supérieure qui commence par sp et la ligne du dessous qui commence par c. Orle fichier commence par une ligne en c donc pas de sp et plusieurs lignes dans le tableau commencent par s. Bon si cela est embêtant, on peut laisser tomber, je ne veux pas vous embeter plus. Cordialement Robert
le fichier est trop volumineux (7,5M)
j'ai diminué le fichier de base et j'ai relancé? Vous voyez le premier commence par c034 qui est une deuxième ligne
Bonjour le forum,

La macro traite la 1ère feuille par groupes de 2 lignes donc tout va bien, le début des phrases n'a pas d'importance.

A+
bonjour job75 et le forum
dommage que je ne peux joindre le fichier trop volumineux. Mais je vous envoie un exemple avec copie écran. Quand on fait tourner la moulinette la première ligne commence pas c5b556444. Ill manque au dessus la ligne qui commence par SP qui identifie les 2 lignes. e vous mets en copie l'extrait de la base de données avec a ligne c5 et sa ligne SP juste au dessus. Toute la base de données est construite comme cela. Cordialement
Robert
Bonjour le forum,

La macro traite la 1ère feuille par groupes de 2 lignes donc tout va bien, le début des phrases n'a pas d'importance.

A+
 

Pièces jointes

  • c5b55....JPG
    c5b55....JPG
    35.9 KB · Affichages: 4
  • image1.JPG
    image1.JPG
    35.7 KB · Affichages: 5
autre exemple dans l'image. On voit que 2d727, il n'y a rien . C'est OK
ensuite pour 626C2 : les deux premières lignes sont correctes, celle qui commence par SP (Q8W242.4) et sa ligne suivante qui elle possède 626C2 et commence par <c.
par contre la ligne suivante devrait commencer avec SP pour reprendre une nouvelle paire, mais elle n'est pas, on passe directement à la ligne suivante qui commence par <c. Si vos regardez dans la base, il y a bien une ligne qui commence par SP et qui chapeaute celle ligne <c. Toutes les lignes vont par couple : la deuxième possède l'info recherché et commence par <c. La première commence par SP et est juste avant.
Ce qui est dommage c'est que l'exemple (soleil etc...) marchait impec et que là...est ce le volume?
Si je vous embete trop, on laisse tomber. e ne veux pas prendre trop de votre temps
cordialement
Robert
 

Pièces jointes

  • c12a4626c2.JPG
    c12a4626c2.JPG
    26.9 KB · Affichages: 3
autre exemple dans l'image. On voit que 2d727, il n'y a rien . C'est OK
ensuite pour 626C2 : les deux premières lignes sont correctes, celle qui commence par SP (Q8W242.4) et sa ligne suivante qui elle possède 626C2 et commence par <c.
par contre la ligne suivante devrait commencer avec SP pour reprendre une nouvelle paire, mais elle n'est pas, on passe directement à la ligne suivante qui commence par <c. Si vos regardez dans la base, il y a bien une ligne qui commence par SP et qui chapeaute celle ligne <c. Toutes les lignes vont par couple : la deuxième possède l'info recherché et commence par <c. La première commence par SP et est juste avant.
Ce qui est dommage c'est que l'exemple (soleil etc...) marchait impec et que là...est ce le volume?
Si je vous embete trop, on laisse tomber. e ne veux pas prendre trop de votre temps
cordialement
Robert
Je vais décortiquer la base de données pour voir si elle est bien nette....
 
- 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
17
Affichages
464
Réponses
10
Affichages
219
Réponses
12
Affichages
210
Réponses
4
Affichages
97
Retour