Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Formulaire Recherche Classeur

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour,

J’ai créé un classeur de « budget personnel » comportant, outre la feuille « accueil », une feuille « Paramètres » qui permet, par exemple, d’ouvrir toutes les feuilles fermées au moment de la fermeture du classeur, de les déprotéger si nécessaire, d’afficher les mois traités (donnée saisie dans les feuilles de saisie mensuelles (Saisie_Janvier, Saisie_Fevrier, etc.), les feuilles de données mensuelles (Janvier, Fevrier, etc.) et les feuilles de saisie mensuelles et une feuille « Recapitulation » qui reprend toutes les recettes et des dépenses réalisées au cours des différents mois et apparaissant, après saisie dans les feuille mensuelles (Janvier, Fevrier, etc.). La saisie des recettes et dépenses réalisées s’effectue à l’aide d’un UserForm dénommé « Formulaire » dans les pages de saisie (Saisie_Janvier, Saisie_Fevrier, etc.).

Tout cela fonctionne parfaitement.

Mais comme j’ai l’esprit compliqué, j’ai essayé de créer un UserForm de recherche sur toutes les feuilles mensuelles (Janvier, fevrier, etc) uniquement (Les autres feuilles du classeur ne seraient pas concernées). Il s’ouvre en cliquant sur la loupe installée sur la feuille « Accueil ». Je précise que les feuilles mensuelles sont fermées et protégées quand on ferme le classeur. Elles peuvent être déprotégées avec une macro installée dans la feuille « Paramètres ».

Après saisie du nom de l’élément recherché dans le formulaire et validation, je souhaiterais que dans la ListView de l’UserForm, apparaissent les colonnes suivantes : Nature, prévu, réalisé des feuilles mensuelles (à condition bien sûr que les cellules concernées ne soient pas vides), et si possible, outre l’identification de la cellule de la feuille concernée, le nom de celle-ci (Janvier, Fevrier, etc.).

Sur un autre classeur, j’ai installé un UserForm de recherche sur toutes les feuilles du classeur qui fonctionne parfaitement. J’ai donc « transposé » l’Userform en question avec son code mais ça ne fonctionne pas. Mes tentatives pour adapter le code à mes nouveaux besoins sont restées infructueuses et je n’ai pas réussi à trouver sur Internet la solution à mon problème.

Si un ou une d’entre vous pouvait m’aider à debugger mon fichier j’en serais heureux (J’en ai ras le bol de chercher et je suis sur le point d’abandonner !).

A toutes fins utiles, je joins à ma demande mon classeur « Budget personnel » qui pourrait vous être utile.



Merci par avance



Cordialement
 

Pièces jointes

  • Recherche _Budget.xlsm
    878.8 KB · Affichages: 27

xUpsilon

XLDnaute Accro
Bonjour,

C'est un sacré morceau de fichier. Pour aller chercher qqchose là dedans serait-il possible d'avoir un exemple précis de ce qui ne fonctionne pas ?
En l'occurrence lorsqu'on ouvre le UserForm, que peut-on chercher qui devrait fonctionner mais qui ne fonctionne pas ?

Bonne journée,
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour,
J'admets que le fichier est imposant. Mais il fonctionne très bien sans la recherche. C'est peut-être irréaliste d'ajouter encore un UserForm de recherche.

Voici ce qui se passe : si par exemple j'entre le mot "Supermarché" dans le ComboBox, non sedulement les éléments que je voudrais voir s'afficher ne s'affichent pas mais j'obtiens un message d'erreur et ça bloque au niveau de la ligne ci-dessous en gras :
Private Sub cbValid_Click()
Afficher_Toutes_Feuilles
Dim Cel As Range
Application.ScreenUpdating = False
Me.ListView1.ListItems.Clear
If ComboBox1 <> "" Then
For i = 1 To Sheets.Count 'en mode de la première feuille à la dernière
If Sheets(i).Name <> "Recherche" Then
For Each Cel In Sheets(i).Range("B4:J" & Sheets(i).Range("F" & Application.Rows.Count).End(xlUp).Row)
If Cel.Row > 3 Then
UserForm1.ListView1.ListItems.Add , , Cel
UserForm1.ListView1.ListItems(UserForm1.ListView1.ListItems.Count).ListSubItems.Add , , Sheets(i).Name
UserForm1.ListView1.ListItems(UserForm1.ListView1.ListItems.Count).ListSubItems.Add , , Cel.Address
End If
Next Cel
End If
Next i
End If
Application.ScreenUpdating = True

End Sub

Il n'est pas impossible d'ailleurs qu'il y ai d'autre erreurs que celle-ci et je n'ai pas trouvé la solution pour faire en sorte que mon userform de recherche dans le classeur fonctionne
Merci d'avoir réagi
Cordialement
JP REYNAUD
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour à tous,
J'ai posté ma demande dans l'espoir qu'un ou qu'une (ou plusieurs) d'entre vous me donnerait la solution à mon problème de blocage.
Pour l'instant je n'ai aucune réponse de dépannage. Mais je ne désespère pas !
Je visiterais le site régulièrement.
En attendant Cordialement à tous
JP Reynaud
 

xUpsilon

XLDnaute Accro
Bonjour,

Ton problème est le suivant :
ta macro recherche une valeur en G57 sur la feuille "Saisie_Juin", sauf que la valeur à cet endroit est une formule qui renvoie une erreur #valeur. Sauf que les items d'une liste ne peuvent pas avoir une erreur comme valeur. Donc la macro plante.

Voilà pour toi, bonne journée,
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour,
Merci
J'ai supprimé la valeur inscrite en G57 sur la feuille "saisie_Juin" qui n'a rien à faire là et qui a dû service à un moment à faire un test.
Mais malheusement ça plante toujours à la ligne "UserForm1.ListView1.ListItems.Add , , Cel.Value"
A plus
 

xUpsilon

XLDnaute Accro
A présent c'est sur la feuille TAM en cellule E29 que se situe l'erreur.
Visiblement, ta macro n'aime pas les formules qui renvoient un résultat d'erreur.
La solution serait de reprendre toutes tes formules avec un SIERREUR, pour renvoyer 0 à la place et éviter que la macro ne plante.

Bien à toi,
 

Jean Pierre REYNAUD

XLDnaute Junior
OK,
Crois-tu qu'il faille reprendre toutes les formules du classeur avec un SIERREUR pour renvoyer un 0 à la place.
Comme il y a de très nombreuses formules dans le classeur, ça va me prendre du temps. Mais si il faut en passer par là !!!!!

Bien à toi,
 

Deadpool_CC

XLDnaute Accro
Bonjour,
Avec des formules en "cascade", si une seule formule d'étape renvoie une erreur, tout le reste est impacté ... mais à toi de voir si tes formules sont opérationnelles dans tous les cas possibles ... Si non, en passer par un sierreur() permet de passer outre et recherche la cause et la correction de la formule plus tard
 

Discussions similaires

Réponses
14
Affichages
358
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…