Formulaire de recherches plusieurs onglets et plusieurs colonnes

Bonjour,

J'espère que vous pourrez m'aider, je n'arrive pas à trouver la réponse à mon problème.

J'ai compilé plusieurs fichiers excel de liste de médicaments (dans mon exemple liste 1, 2 et 3). Le but est de pouvoir faire des recherches dans tous les onglets afin de savoir si un médicament se trouve dans l'une ou l'autre des listes ou dans aucune, en faisant la recherche soit par UCD, soit par DCI, soit par la spécialité et dans ce dernier cas, l'information à saisir est le début du texte contenu dans la cellule recherchée. A noter que ces tableaux sont réactualisés tous les mois, et que je ne peux donc pas faire de grosses manipulations tous les mois pour les remettre en forme.

Dans un 1er onglet, je voudrais créer le formulaire de recherche.

J'arrive en interrogeant le code UCD, en utilisant la fonction de recherche.

Par contre, cela ne fonctionne pas en interrogeant la DCI, je suppose parce qu'elle n'est pas dans la 1ère colonne ? Comment faire en conservant le même tableau ?

et pour le 3e mode d'interrogation, même problème que dessus et je ne trouve pas comment interroger uniquement sur le début de la cellule Spécialité ou du texte contenu dans la cellule. Ici l'exemple avec le PREVYMIS qui a plusieurs libellés.

Merci par avance pour votre aide.

Bonne fin de journée.

Bonsoir,

une proposition à adapter :

@ bientôt

LouReeD

Bonjour

Merci pour votre réponse, par contre, je n'arrive pas à débloquer la sécurité qui s'est mise sur votre fichier avec macro. Ce fichier est-il sûr ?

Et je ne comprends pas comment l'utiliser et l'adapter .... Merci par avance.

Ca y est j'ai trouvé. Je vais voir à l'usage si je peux appliquer cela.

Comment dois je faire pour récupérer la macro pour la transposer dans un autre fichier ?

Bonjour,

veuillez trouver ci joint votre fichier avec mon code.
Une zone de saisie sur la feuille "Recherche", une boite de dialogue qui vous dit si la recherche à abouti et vous demande dans ce cas si c'est bien ce que vous cherchez :
- si oui cela s'arrête mais on peut imaginer remplir le tableau de la feuille "Recherche" avec les données trouvées
- si non la recherche redémarre pour trouver éventuellement une autre donnée équivalente.
- si non en fin de recherche alors le code vous annonce qu'il n'y a pas de données correspondantes
- si annuler alors on quitte la recherche

Le fichier :

@ bientôt

LouReeD

Bonjour

Je vais étudier cela. Merci pour votre réponse.

Bonsoir,

merci pour votre retour et remerciement !

En vous souhaitant bonne continuation dans votre projet.

@ bientôt

LouReeD

Bonjour LouReeD.

Désolée de ne revenir vers vous que maintenant, je n'avais pas eu le temps de me remettre dessus.

Dans votre message du 17/01, vous écrivez "ci joint votre fichier avec mon code", mais c'est le même fichier que vous avez renvoyé.

Pouvez vous me renvoyer le bon ? En vous remerciant.

Bonjour,

et désolé ! Je n'y avais pas prêté attention !

Votre fichier avec le code adapté :

Il fait la recherche sur toute les feuilles sauf la feuille "Rechercher" celle où se trouve le bouton.
Pour le reste, il sélectionne la première donnée et vous demande si c'est la bonne, etc...

@ bientôt

LouReeD

En effet, merci, cela répond bien à mes besoins.

Par contre c'est sensible à la casse. Est-ce qu'il y a moyen de changer ou pas ?

Et comment modifier la zone de recherche si je dois rajouter des onglets ?

Bonjour,

c'est pris en compte, dans un futur proche une recherche non sensible à la Casse, avec possibilité de mettre des "*" pour remplacer un voir plusieurs caractères, donc au final avec une recherche de type "Fr*nce*", vous aurez des résultats comme FRANCE, France, Frilance, ou France et Belgique....

Le temps pour moi de coder le nouveau fichier.

@ bientôt

LouReeD

Bonsoir,

Il vous suffit de remplacer des valeurs inconnues par des "*", par exemple pour chercher France, vous pouvez mettre FR*ce, en ajoutant une étoile au début et une étoile à la fin car sinon quelque fois cela ne marche pas Donc dans le champ de recherche : *FR*ce*

Voici le fichier qui ne respecte pas la casse et qui accepte les "*" :

@ bientôt

LouReeD

Salut à tous,

@LooReed, avec l'option Compare Text en haut du module, tu changes le comportement de Like et tu obtiens les résultats que tu espérais. Enfin, si j'ai bien compris.

image

Cela me semble parfait. Merci beaucoup.

Juste un détail, ... ;-))

comment je fais pour récupérer cette macro pour l'enregistrer dans l'autre fichier où j'ai déjà modifié mes onglets ?

Si je fais exporter puis importer cela ne fonctionne pas .

Finalement j'y suis arrivée, je ne sais pas comment.

Un grand merci pour votre aide et votre patience.

Bonne fin de journée

Bonsoir,

Merci de votre retour et de vos remerciements !

Saboh12617 merci pour l'info, je n'y pense pas assez à ce Compare Text !

Plus simple que le UCase.

@ bientôt

LouReeD

Bonsoir,

en reprenant l'idée de saboh12617, voici le code "simplifié".
En fait une seule boucle est nécessaire.
Dans le code j'ai ajouté automatiquement une étoile avant et après la donnée du textbox comme cela vous n'avez qu'à mettre la donnée avec éventuellement un joker "à l'intérieur" pour faire une recherche "complète"

Le code :

Option Compare Text

Sub Macro_Recherche()
    If Sheets("Recherche").TextBox1.Value = "" Then Exit Sub
    Dim Cel As Range, Feuil As Worksheet, Str_critère As String, Str_critèrere As String, X As Byte
    Str_critère = "*" & Sheets("Recherche").TextBox1.Value & "*"
    For Each Feuil In Sheets
        If Feuil.Name <> "Recherche" Then
            For Each Cel In Feuil.UsedRange
                If Cel Like Str_critère Then
                    Feuil.Activate
                    Cel.Activate
                    X = MsgBox("Référence """ & Str_critère & """ trouvée :" & Chr(13) & _
                    "Sur la documentation : " & Feuil.Name & Chr(13) & _
                    "à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
                    "Est-ce celle là ?" & Chr(13) & Chr(13) & _
                    "Oui : on quite" & Chr(13) & _
                    "Non : on continue la recherche " & Chr(13) & _
                    "Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
                    vbQuestion + vbYesNoCancel, "Référence trouvée")
                    Select Case X
                    Case 6 'oui
                        Exit Sub
                    Case 2 'annuler on sort
                        Exit Sub
                    Case Else 'Non=7
                        'on fait rien, mais on pourrait
                    End Select
                End If
            Next Cel
        End If
    Next Feuil
    MsgBox ("Désolé. La référence ' " + Str_critère + " ' que vous cherchez n'existe pas dans ce classeur.")
End Sub

@ bientôt

LouReeD

Bonsoir,

en modifiant le code un peu et en ajoutant un bouton, vous pouvez faire une recherche sèche ou bien complète :
- sèche : par exemple FR*ce, vous recherchez France mais avec rien avant ni après
- complète : par exemple FR*ce, vous recherchez France mais avec éventuellement un texte avant et/ou après...

A voir si c'est bien utile...
Le fichier :

@ bientôt

LouReeD

Bonjour

Merci.

Du coup, pour faire cela bien, comment je récupère proprement ces 2 ou 3 macro pour les mettre dans mon fichier qui contient mes données ?

Bonjour Lou Reed,

Je me permets de vous recontacter car depuis quelques temps j'ai un problème avec le fichier et la macro que vous aviez faite.

il fonctionne très bien la plupart du temps, j'ai pu mettre à jour les données et ajouter des onglets. Mais depuis quelques temps j'ai un message d'erreur qui apparait et je ne sais pas comment le résoudre. Il semble que cela apparaisse quand la valeur recherchée n'est pas trouvée, au lieu d'indiquer comme prévu dans la macro : MsgBox ("Désolé. La référence ' " + Str_critère + " ' que vous cherchez n'existe pas dans ce classeur.")

image

J'ai repris le fichier d'origine, mais le message apparait toujours. Comment puis je corriger cela ?

Merci par avance pour votre aide.

Bien cordialement.

Rechercher des sujets similaires à "formulaire recherches onglets colonnes"