Rechercher et copier le contenu d'une cellule selon deux critères

Bonjour à tous,

Je cherche à réaliser une macro qui me permettrait de remplir un tableau dans une feuille (INFOS1) avec des valeurs trouvées et copiées depuis une autre feuille (DONNEES1). Les critères pour trouver les valeurs dans la feuille DONNEES1 sont : Il faut trouver chaque texte "TOTO" et ensuite les chiffres "10", "20" et "30". Les valeurs recherchées se trouvent dans les cellules qui suivent immédiatement celles qui contiennent ces chiffres

Je souhaiterais copier toutes les infos existantes pour autant de "TOTO" trouvés dans la colonne A (la quantité de "TOTO" peut varier)

Lors de mes premiers essais, par hasard, le nombre de ligne entre "TOTO" et les données que je recherchais était constant. Du coup c'était assez facile et j'ai pu réaliser une première macro qui prenait en compte cet élément constant (exemple des feuilles "DONNÉES" et "INFOS et macro "Recherche", dans le fichier joint). Malheureusement, en réalisant plus de tests, je me suis aperçue que ce n'est pas toujours le cas, et que le seul élément constant lors de l'analyse des données est le fait qu'après avoir trouvé le texte "TOTO", les données recherchées se trouvent toujours immédiatement après les cellules qui contiennent les chiffres "10", "20" et "30. Mais le nombre de ligne entre "10","20" et "30" et "TOTO" varie et on peut aussi trouver des cellules contenant "10", "20" et "30 ailleurs dans la colonne et ces dernières ne doivent pas être considérées. (Exemple Feuilles "DONNEES1" et "INFOS1", dans le fichier joint)

Il est également nécessaire de conserver l'ordre et ne pas mélanger les infos d'un "TOTO" à l'autre, ni prendre en considération des cellules contenant "10", "20" ou "30" ailleurs dans le tableau, si elles ne sont pas précédées du "TOTO"

Du coup, je ne sais pas du tout par où commencer pour réussir à prendre en compte ces deux critères. C'est à dire : "Cherche d'abord "TOTO", puis, dans les lignes qui suivent, cherche "10" et copie le contenu de la cellule en dessous...Et idem pour "20" et "30"...")

Je joins un fichier avec les onglets "DONNEES1" et "INFOS1", en rouge , qui sont les nouveaux onglets pour lesquels je souhaiterais réussir à réaliser la nouvelle macro. Dans ce fichier, j'ai également laissé les anciens onglets "DONNÉES" et "INFOS" ainsi que l'ancienne macro (qui fonctionne uniquement si le nombre de ligne est toujours identique), pour donner une idée de ce que je souhaitais faire

Si vous avez le temps, l'envie et que vous avez une idée pour me donner un coup de main, ça serait vraiment super !

Merci d'avance !

Bonsoir,

Un essai sur le fichier joint.

Cordialement

Bonjour haonv,

Ohh ! C'est exactement ça !!

Je vais essayer maintenant de bien comprendre votre macro et faire plusieurs autres essais. Tout y est bien expliqué, c'est vraiment super !!!

Un grand merci !!

Très belle journée

Re,

Je viens de découvrir que l'on peut simplifier l'écriture de la mise en forme de la feuille "INFOS1".

La fin du code devient donc :

With Sheets("INFOS1")
    .Range("A2").Resize(j, 4) = WorksheetFunction.Transpose(Tablo())            ''on transpose le tableau sur la feuille "INFOS1"
    .Range("A2:A" & j + 1).Interior.Color = RGB(211, 211, 211)                       ''''' on met en forme
        With .Range("A1:D" & j + 1).Borders
                .LineStyle = xlContinuous
                .Weight = xlThin
        End With
End With
End Sub

Bonne journée

Cordialement

Merci beaucoup haonv pour cette simplification très efficace.

Votre fichier m'aide vraiment beaucoup !

A tout hasard, serait-il possible de faire en sorte que si une info est présente plusieurs fois après le TOTO, seule la première apparaisse (actuellement si une info est présente plusieurs fois seule la dernière apparaitra) ? Ou alors limiter la recherche de 10,20,30 entre deux textes, genre entre deux "TOTO" ou entre un "TOTO" et "FIN", par exemple ? (car, entre ces deux texte, il est sur que 10,20,30 apparaitront une seule fois)

Mais je ne voudrais pas abuser :) C'est déjà génial

Re,

Ou alors limiter la recherche de 10,20,30 entre deux textes, genre entre deux "TOTO" ou entre un "TOTO" et "FIN", par exemple ? (car, entre ces deux texte, il est sur que 10,20,30 apparaitront une seule fois)

Si entre 2 toto, 10,20,30 n'apparaissent qu'une seule fois, la macro telle quelle suffit.

Sinon, il faudra légèrement modifier celle ci

Cordialement

Oui, entre deux TOTO ils n'apparaissent qu'une seule fois. Le problème est juste pour après le dernier TOTO, car les 10,20,30 pourraient apparaitre après d'autres mot (TATA, FIN, ARC, LINE etc...) et je ne souhaiterais pas que ceux-ci soient pris en compte

Re,

Le fichier en retour, avec une modification qui conserve la première valeur trouvée.

Cordialement

Merci beaucoup haonv, c'est parfait maintenant !! Toutes les possibilités sont couvertes. Merci beaucoup aussi, pour les commentaires dans la macro, qui permettent de tout bien comprendre.

Un grand merci pour ta disponibilité, tes compétences et ta rapidité !

Très belle journée

Rechercher des sujets similaires à "rechercher copier contenu deux criteres"