sélectionner toutes les cellules contenant le mot "bidule"

francois17

XLDnaute Nouveau
Bonjour à tous,

Je suis débutant sur Excel mais je voudrais réaliser une application à l'aide de ce formidable outil.

Voici ma première question:
Je dispose d'un tableau dont les champs sont déjà remplis de textes en tous genres. Je voudrais pouvoir sélectionner toutes les cellules contenant le mot bidule au sein du texte, les copier puis les coller dans un autre tableau, de telle sorte que mon tableau final ne contienne que des cellules contenant au moins une fois le mot bidule.

Je crois qu'il faut faire une espèce de boucle, mais étant vraiment débutant, je vous laisse évidemment répondre comme bon vous semble.

Merci beaucoup pour vos réponses! :)

François

Remarque: j'utilise Excel 2007 sous Windows XP. Veuillez m'expliquer en détail ce qu'il faut faire, je ne suis pas familier avec les formules, macros et autres merveilles. merci :)
Excusez-moi si la question a déjà été posée, je n'ai pas trouvé de réponse en cherchant sur le forum.
 

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Merci mapomme, je vais creuser cette piste et essayer de l'adapter à mon cas.

(En réalité je ne vous ai pas tout dit sur la complexité de mon application).

Coucou PierreJean:)

Bises

C@thy
 

Zon

XLDnaute Impliqué
Re : sélectionner toutes les cellules contenant le mot "bidule"

Salut,

Je connais Cathy , elle ne dit pas tout , si tu as beaucoup de lignes: écrire sur les cellules plusieurs fois va ralentir le code de Mapomme.

Donc je ne fais que transformer le code de Mapomme en TableauVBA afin d'écrire le résultat en une fois.


Code:
Sub TrouveCathy()
 Dim T
  'on efface les anciens résultats
  With Sheets("Feuil1")
    .Range("L2:O" & .[A65536].End(xlUp).Row).Value = ""
    T = .Range("A2:O" & .[A65536].End(xlUp).Row).Value
    .[A2].Resize(UBound(T), UBound(T, 2)) = TrouveMot(T, LCase(Trim(.Cells(1, "r"))), 11, 12, 13, 14, 15)
  End With
End Sub

Function TrouveMot(T, aTrouver$, ColR&, Col1&, Col2&, Col3&, Col4&)
 'ColR , colonne où va cherhcer atrouver
 'col1 =Qui,col2=société,col3=Annee1,col4=anne2
 Dim Mots, I&, J&, K&
  For K = LBound(T) To UBound(T)
    Mots = Split(LCase(Trim(T(K, ColR))), "$")
    For I = 0 To UBound(Mots)
      If Mots(I) = aTrouver Or Mots(I) Like aTrouver & " *" _
         Or Mots(I) Like "* " & aTrouver & " *" Or Mots(I) Like "* " & aTrouver _
         Or Mots(I) Like "*'" & aTrouver & " *" Or Mots(I) Like "*'" & aTrouver Then
        T(K, Col1) = T(K, 1)
        T(K, Col2) = Mots(I)
        J = I + 1
        If J <= UBound(Mots) Then
          If IsNumeric(Trim(Mots(J))) Then T(K, Col3) = CLng(Mots(J))
        End If
        J = I + 2
        If J <= UBound(Mots) Then
          If IsNumeric(Trim(Mots(J))) And (Trim(Mots(J - 1)) = "" Or IsNumeric(Trim(Mots(J - 1)))) Then T(K, Col4) = CLng(Mots(J))
        End If
        Exit For
      End If
    Next I
  Next K
  TrouveMot = T
End Function

A+++


Ps : comment vous editez le code sur le forum avec les mots en bleu.. ?
 

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Waoooo! Merci Fab, quelle efficacité. Encore une fois tu viens à mon secours...:cool::cool: et c'est vrai, tu me connais bien!:)

J'étais en train d'essayer de transformer le code de Mapomme pour mettre les infos en Feuil1,
le nom en A date1 en B et date2 en C (à la rigueur la chaine trouvée entre 2 $ col D pour vérification)
car je ne peux pas modifier la feuille (nommée "BD") où se trouve ma base. (et en fait ça ne marchait pas car les infos doivent se trouver en Feuil1 les unes en-dessous des autres, sans trous, pour que l'utilisateur puisse imprimer ces infos).

Ensuite, dans mon userform, je n'affiche que les personnes dont le nom figure dans Feuil1

comme ceci :
Code:
Private Sub UserForm_Initialize()
'boutons des lettres de l'alphabet
For B = 1 To 27: Set Btn(B).GrLettres = Me("B_" & B): Next B
Sheets("BD").[B2:G5000].Sort key1:=Sheets("BD").[B2]
'-- Liste des noms
Me.Lettre = "Tous"
If Worksheets("Feuil1").Range("A1") Is Nothing Then
Set Plage = Range(Sheets("BD").[B2], Sheets("BD").[B65000].End(xlUp))
[COLOR=#0000ff]Else
Set Plage = Range(Sheets("Feuil1").[A1], Sheets("Feuil1").[A65000].End(xlUp))
[/COLOR]End If
majChoixNom
ligne = 2
majFiche
End Sub
en bleu, mon nouveau code por n'afficher que les fiches des agents qui ont le mot-clé en col. K

Code:
Sub majChoixNom()
    Me.choixnom.Clear
    If Me.Lettre = "Tous" Then
      For Each c In Plage
       Me.choixnom.AddItem c
      Next c
    Else
      For Each c In Range(Sheets("BD").[B2], Sheets("BD").[B65000].End(xlUp))
        If Left(c.Value, 1) = Me.Lettre Then Me.choixnom.AddItem c
      Next c
    End If
End Sub


Bravo pour ton code!

Mille mercis

Bisous bisous

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Bon, pour ne rien vous cacher...:eek: voici le vrai fichier, expurgé des adresses, mails et tél

oili oilou...

Edit : j'ai mis en Feuil1 les infos que je dois récupérer

Bises

C@thy
 

Pièces jointes

  • Fichier final avec TextBox(7).zip
    335.8 KB · Affichages: 120
Dernière édition:

Zon

XLDnaute Impliqué
Re : sélectionner toutes les cellules contenant le mot "bidule"

re,

désolé Cathy mais je n'ai qu'excel 2003 il me manque la bbliothèque Outlook pour pouvoir faire fonctionner ton userform.

mais bon ça c'est pas le problème , quel critère de recherche tu dois saisir ? le atrouver de mapomme?

A+++
 

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Pas tout compris, Fabrice, mon fichier est en 2003
et je n'ai pas d'interférence avec Outlook

Je suis en train de rechercher un moyen (usf) pour interroger la base par mots-clés,
je pense à des boutons radio du style souhaitez-vous rechercher sur :
le nom
la carrière
le cursus
L'adresse professionnelle
ce qui me donnera la colonne a rechercher
j'aurai une liste des grandes institutions et je rechercherai ces mots-clés dans la bonne colonne
par exemple si je veux savoir qui est chez Areva aujourd'hui je rechercherai dans l'adresse pro,
qui y a été récemment je rechercherai dans la carrière (c'est l'utilisateur qui choisira où on recherche, mais une seule colonne) avec le système d'affichage de la date a coté de ma recherche je saurai à qui m'adresser, j'irai consulter les fiches pour avoir le Tél.ou le mail.

enfin, j'imagine ça comme ça, mais y'a peut-etre une meilleure idée...

J'espère avoir été claire, mais je n'en suis pas sûre.

Bises

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Coucou les amis,

En fait, vous l'aurez remarqué, le mot industrie (par exemple) est à rechercher dans la colonne V, et non K
et j'ai constaté que la cellule se termine toujours par un $ donc cela simplifie légèrement le code.

En résumé, ma base est dans la feuille "BD", les infos en col V.

Je récupère dans une autre feuille les noms de ceux qui ont le mot-clé cherché dans la colonne V,
ainsi que les dates qui suivent entre les $ si elles existent, ainsi que la chaine de caractères complète comportant le mot-clé trouvée entre les $.

Oili oilou, maintenant c'est plus clair, je pense.

Merci à vous.

Bises

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

P.S.

Zon, tu as raiZon, il y avait avant une histoire d'envoyer un mail avec outlook,

mais cela n'est plus à prendre en compte.

Bises

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Coucou les amis,

bon, voilà, j'ai bien réussi à copier les noms à la suite sur une autre feuille, mais je n'arrive pas à modifier le code de mapomme pour récupérer les dates et le texte entier compris entre 2 $ et comportant industrie.

Mapomme, Zon et tous ceux qui voudraient bien m'aider, puis-je vous demander votre aide à nouveau?
Ce n'est pas facile... et je ne m'en sors pas trop...

Merci à vous,

Bises et bonne journée

C@thy
 

Zon

XLDnaute Impliqué
Re : sélectionner toutes les cellules contenant le mot "bidule"

Salut,

Cathy

Tu as en PJ 1 exemple dans modZOn pour faire une recherche et mettre le résultat dans une feuille de calcul,

et 1 adapté à l'userform1 avec textbox affiichage dans listbox.

Dis moi si on est sur la bonne voie , ensuite on adaptera à tes besoins.


A+++
 

Pièces jointes

  • Copie de Fichier final avec TextBox(7).zip
    349.3 KB · Affichages: 94

C@thy

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Juste un troc, Zon, mais je ne sais pas si c'est possible,
quand il y a plusieurs fois le mot dans la cellule, il faudrait trouver la dernière occurrence, et donc
les dates les plus récentes...

J'avais pas pensé à ça...

Merci a Toi et big bisous

C@thy
 

Zon

XLDnaute Impliqué
Re : sélectionner toutes les cellules contenant le mot "bidule"

Re,

comme les dates sont toujours aprés la chaine recherchée il suffit d'inverser la boucle dans la fonction trouvemot

la ligne suivante
VB:
For I = 0 To UBound(Mots)

devient

VB:
 For I = UBound(Mots) To 0 Step -1

A+++
 

chris

XLDnaute Barbatruc
Re : sélectionner toutes les cellules contenant le mot "bidule"

Bonjour
Bise à C@thy

J'airais tendance à passer par un filtre avancé en cherchant industrie mais en éliminant industriel

Tu peux l'automatiser

Edit : BUG je n'ai vu que tes deux premiers messages et après voir posté je vois que tu as eu plein de solutions...
 

Pièces jointes

  • CATHY.xlsx
    9.5 KB · Affichages: 67
  • CATHY.xlsx
    9.5 KB · Affichages: 72
  • CATHY.xlsx
    9.5 KB · Affichages: 68

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 950
Membres
103 404
dernier inscrit
sultan87