Rechercher un mot dans une cellule et afficher son contenu

Bonjour,

Dans mon fichier excel, je voudrais faire une macro qui, quand je l'active me recherche dans toute la feuille 1 le mot "dégradé" et qui ensuite me copie sur une autre feuilles le contenu des cellules qui comprennent ce mot.

J'avais essayé avec la RECHERCHEV mais le problème c'est que la RECHERCHEV me copie les cellules que d'une seule colonne. Alors que dans mon fichier excel, le mot "dégradé" apparaît dans plusieurs colonnes.

Merci d'avance de votre aide

Bonsoir antoinep,

Un extrait de ton fichier, sans données confidentielles, mais représentant bien la structure de ton fichier réel serait le bienvenu!

Précise aussi pourquoi tu veux une macro: tu dois refaire la manipulation très souvent? (un filtre avancé ferait peut-être le boulot?)

Je vous fournis 2 photos qui montrent ce que je veux faire, la première photo montre une partie de la feuille 1 et la deuxième photo montre ce que je veux faire sur la feuille 2. En espérant que ça vous éclaircisse.

Et je voudrais faire une macro car c'est ce qui m'est demandé et que je dois répéter une fois par mois cette manipulation.

Créer une macro, j'arrive à faire mais je suis bloqué sur la formule à rentrer dans la cellule de la feuille 2 :/

Merci d'avance de votre aide

image006 image010

Bonjour antoinep, (U. Milité)


Sub OuEstDgrade()
Dim ws1 As Object
Dim ws2 As Object

Dim ligDeb, ligFin, ligCpt
Dim colDeb, colFin, colCpt, colNbr

Dim ligRes

Dim tabBrut()

    Set ws1 = Worksheets("Feuil1")
    Set ws2 = Worksheets("Feuil2")

    With ws1
        ligDeb = 1
        colDeb = 1
        colFin = .Cells(ligDeb, Columns.Count).End(xlToLeft).Column
        colNbr = colFin - colDeb + 1
        ligFin = 0
        For colCpt = 1 To colNbr
            ligFin = EstMax(ligFin, .Cells(Rows.Count, colCpt).End(xlUp).Row)
        Next
        tabBrut = Range(.Cells(ligDeb, colDeb), .Cells(ligFin, colFin))
    End With

    With ws2
        ligRes = 0

        For ligCpt = 1 To UBound(tabBrut, 1)
            For colCpt = 1 To UBound(tabBrut, 2)
                If InStr(tabBrut(ligCpt, colCpt), "dégradé") > 0 Then
                    ligRes = ligRes + 1
                    .Cells(ligRes, 1) = tabBrut(ligCpt, colCpt)
                End If
            Next
        Next
    End With

    Set ws1 = Nothing
    Set ws2 = Nothing
End Sub

Function EstMax(n1, n2)
    EstMax = IIf(n1 > n2, n1, n2)
End Function

Bonjour, merci de votre contribution mais j'ai un problème avec la macro que vous m'avez donné, je vous mets en photo ce qu'elle m'affiche.

Je ne sais pas si c'est moi qui ai mal recopié la macro :/

capture

(re)

Belle photo

Mais où est le problème ?

La macro-cmde a l'air de fonctionner (pas de debug - ligne jaune marquant l'erreur absente)

La feuille contient bien une cellule contenant "dégradé"

re-bonsoir,

Bonsoir andrea73,

Le problème (au-delà du fait qu'on ne dispose toujours pas d'un vrai fichier ) est que le terme "dégradé" peut manifestement figurer n'importe où dans une cellule ... et d'après une des images fournies, on devrait peut-être le chercher au début du texte dans les cellules?

D'autre part, telle qu'utilisée, la fonction Instr sera sensible à la casse (si je ne m'abuse!?) et ne repèrera peut-être pas les termes cherchés s'ils ont une initiale en majuscules?

(re)

J'ai du mal expliquer ce que je voulais, comme vous pouvez le voir dans les réponses au dessus, je voudrais que sur la feuille 2, la macro copie tout le contenu de la cellule dans la feuille 1 qui contient le mot "dégradé" et la colle dans la feuille 2


Je vous mets une partie du fichier et pour info, mon fichier à environ une centaine de colonne mais l'échantillon que je vous donne représente exactement les autres colonnes

(re) Bonsoir U.Milité

  1. U. Milité a écrit :
  2. U. Milité a écrit :
    aller au point 1


antoinep a écrit :

J'ai du mal expliquer ce que je voulais, comme vous pouvez le voir dans les réponses au dessus, je voudrais que sur la feuille 2, la macro copie tout le contenu de la cellule dans la feuille 1 qui contient le mot "dégradé" et la colle dans la feuille 2

parfait parce qu'elle c'est exactement ce qu'elle réalise !

Maintenant je vais regarder ton fichier, et nous verrons la suite... ...

andrea73 a écrit :

aller au point 1

c'est à dire ?

andrea73 a écrit :

parfait parce qu'elle c'est exactement ce qu'elle réalise !

Votre macro affiche juste le mot "dégradé", comme je vous l'ai montré sur la photo. Moi ce que je voudrais c'est que par exemple dans la cellule il y a "dégradé : blablabla" , j'aimerais que la macro détecte qu'il y a le mot "d&gradé" dans la cellule et que dans la feuille 2, ça recopie "dégradé : blablabla"

(re)

Comme ça ?

Il est vrai qu'avec un fichier, c'est tout de suite mieux !

Re et re bonsoir,

Pas trop compris le message d'andrea73 (sauf que c'est plutôt à moi qu'il semblait adressé ... tu peux donc arrêter de t'interroger)

Sans vouloir entrer en compétition avec la macro du même andrea73 et juste pour éclairer ce que je disais à propos des filtres avancés, j'ai illustré en pièce jointe le résultat obtenu de cette manière ...

Bonne soirée,

Je vous remercie beaucoup tous les deux de votre aide et d'avoir réussi à répondre à ma demande

J'ai choisi la solution d'andrea car c'est ce qui correspond le plus à ce que je voulais

Par contre la solution de U. Milité reste intéressante mais j'ai un problème avec, la fenêtre du filtre je n'arrive pas à l'utiliser, j'arrive juste à la déplacer

(re)

antoinep a écrit :

Je vous remercie beaucoup tous les deux de votre aide et d'avoir réussi à répondre à ma demande

antoinep a écrit :

Par contre la solution de U. Milité reste intéressante mais j'ai un problème avec, la fenêtre du filtre je n'arrive pas à l'utiliser, j'arrive juste à la déplacer

Si tu parles de la fenêtre qui était dans le fichier que j'ai envoyé, c'est assez normal: c'était juste une image de la fenêtre Pour afficher la véritable fenêtre et la compléter comme sur l'image en question, il faut aller dans Données > groupe Trier et Filtrer > Avancé ... (ça devrait aller mieux)

Ah oui je comprends mieux pourquoi ça marchait pas ^^

Rechercher des sujets similaires à "rechercher mot afficher contenu"