Récupérer des données à partir du mot trouvé grâce à la fonction .Find

Bonjour,

Je fais suite au topic que j'ai ouvert récemment : https://forum.excel-pratique.com/viewtopic.php?p=660121#p660121

La macro fonctionne correctement mais j'aimerai apporter deux modifications si c'est possible ...

Voici le code de ma macro :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim N As String 'déclare la variable N (Nom)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS (à adapter à ton cas)
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD (à adapter à ton cas)
Set R = OS.Columns(5).Find(">limite", , xlValues, xlWhole) 'définit la recherche R (recherche les occurrences de ">limite" dans la colonne 5 (=E) de l'onglet source OS
If Not R Is Nothing Then 'condition : s'il existe au moins une occurrence
    PA = R.Address 'définit l'adresse PA de la première occurrence trouvée
    Do 'exécute
        'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onglet destination OD)
        If OD.Range("A1").Value = "" Then Set DEST = OD.Range("A1") Else Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
        DEST.Value = Mid(OS.Cells(R.Row, 1).Value, 3) 'récupère les numéros de R
        DEST.Offset(0, 1).Value = Mid(OS.Cells(R.Row, 2), 3) 'récupère les numéros de T
        N = OS.Cells(R.Row, 1).End(xlUp).Value 'récupère le nom
        N = Left(N, Len(N) - 4) 'enlève l'extension
        DEST.Offset(0, 2).Value = N 'récupère le nom
        Set R = OS.Columns(5).FindNext(R) 'redéfinit la recherche R (occurrence suivante)
    Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en PA
End If 'fin de la condition
End Sub

Explication de la macro :

Cette macro permet de trouver la chaine de caractère ">limite" sur la feuill1, SI la condition est vrai ALORS (par exemple) la valeur de la première cellule "A22" (en rouge), la valeur de la deuxième cellule "B22" (en bleu) et la valeur de la troisième cellule la plus haute (en vert : le nom de la personne) est copié respectivement sur la feuill2. Ceci à chaque fois qu'il trouve le mot ">limite".

* A présent, un numéro est introduit dans le nom de la personne juste avant l'extension (en orange), j''aimerai savoir s'il est possible que ma macro vérifie ces 3 dernières lettres, le but est que si la macro détecte le n° suivant : Z01, Z06, Z10, Z14 et Z17 ALORS :

Cas avec :

  • Z01 alors écrire dans colonne F, la valeurs 600 sur la feuil2
  • Z06 alors écrire dans colonne F, la valeurs 800 sur la feuil2
  • Z10 alors écrire dans colonne F, la valeurs 900 sur la feuil2
  • Z14 alors écrire dans colonne F, la valeurs 1100 sur la feuil2
  • Z17 alors écrire dans colonne F, la valeurs 1200 sur la feuil2

et ajouter les chaines de caractères :

"Taille" en cellule A

"trouvé" en cellule B

"0" en cellule C

Ceci à chaque fois que le mot ">limite" est trouvé par la macro.

N'étant vraiment pas bon en VBA, j'ai besoin de votre aide. Je me permets de vous joindre mon fichier Excel.

Merci pour les personnes qui m'aideront.

12classeur1.xlsx (12.88 Ko)

Bonjour Spaxe x le forum

ton fichier en retour

a+

papou

21space-x-v1.xlsm (28.49 Ko)

Bonjour paritec,

ça marche parfaitement, merci beaucoup !

La puissance de Excel ne cessera de m’impressionner.

Re Space x le forum

oui excel est puissant mais il faut aussi savoir comment traiter cette puissance !!

a+

papou

Bonjour space x le forum

si ton problème est résolu, merci de cliquer sur le bouton comme indiqué dans les smiley à droite

a+

Papou

Rechercher des sujets similaires à "recuperer donnees partir mot trouve fonction find"