erreur d'exécution 424

mhz

XLDnaute Junior
Bonjour,

j'ai une erreur dans mon code VBA et le message "erreur d'exécution apparait"

c'est à cette ligne le problème survient :
Set rFndVal = shPrm.Columns(sListCol & ":" & sListCol).Find(What:=sValue, LookAt:=xlWhole)

Si vous avez la solution à mon problème ce serait merveilleux !

Merci d'avance !
 

Pièces jointes

  • Formulaire des aides.xlsm
    70.9 KB · Affichages: 40
  • Formulaire des aides.xlsm
    70.9 KB · Affichages: 41
  • Formulaire des aides.xlsm
    70.9 KB · Affichages: 42

Modeste

XLDnaute Barbatruc
Re : erreur d'exécution 424

Bonjour mhz,

De solution, je n'en ai point ... mais une question, oui: à différents endroits de ton code, tu fais référence à une même variable nommée "shPrm"
... mais à quoi correspond-t-elle?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : erreur d'exécution 424

Bonjour le fil, bonjour le forum,

Tu as deux variables dans la ligne : ShPrm et sListCol.
Tu as, semble-t-il, trouvé l'erreur pour la première. Si ce n'est elle c'est donc sa sœur !
Que vaut sListCol quand ça plante ? cette variable serait vide ("") que ça ne m'étonnerait pas...
 

Modeste

XLDnaute Barbatruc
Re : erreur d'exécution 424

Re,

Ce qui me laisse perplexe c'est que je ne vois nulle part, dans ton code, une instruction ressemblant (s'il s'agit d'une feuille) à Set shprm= ??? ... ma question reste donc d'application, il me semble: à quoi correspond cette variable (dans le code et pas seulement dans ton esprit :))

[Edit:] Salut Robert :D
 

mhz

XLDnaute Junior
Re : erreur d'exécution 424

Je vous renvois le fichier modifié par contre je vois pas d'ou vient l'erreur à la même ligne que tout à l'heure si vous pourriez m'éclairer...

Set rFndVal = Feuil1.Columns(sListCol & ":" & sListCol).Find(What:=sValue, LookAt:=xlWhole)

Merci d'avance
 

Pièces jointes

  • Formulaire des aides.xlsm
    71.6 KB · Affichages: 37
  • Formulaire des aides.xlsm
    71.6 KB · Affichages: 42
  • Formulaire des aides.xlsm
    71.6 KB · Affichages: 41

Modeste

XLDnaute Barbatruc
Re : erreur d'exécution 424

Re²,

Robert (ou d'autres!?) aura peut-être une autre idée, mais si je comprends:
- la ligne citée figure dans la Fonction ValueExist
- cette fonction est appelée par la Procédure AddToList
- cette Proc est elle-même appelée au clic sur le bouton "Valider" par Call AddToList(Me.ComboBox5.Value, Me.ComboBox5.Tag) ... Ouf, j'y suis arrivé :p

Nouvelle question, donc: que vaut Me.ComboBox5.Tag au moment de l'appel?? (chez moi, une chaîne vide!? Tiens, Robert ne l'avait-il pas posé comme hypothèse)
Au passage, Combobox5 est vide ... de même que certains autres combos ... mais ce sera pour plus tard
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : erreur d'exécution 424

Bonjour le fil bonjour le forum,

D'abord: l'Initialisation/Activation d'une UserForm s'écrit toujours :
Code:
Private Sub UserForm_Initialize()
Code:
Private Sub UserForm_Activate()
Quel que soit le nom de celle-ci. Comme chez toi elle s'appelle UserForm1, tu avais cru bon d'écrire
Private Sub UserForm1_Initialize()
Private Sub UserForm1_Activate()
résultat : ni l'initialisation, ni l'activation ne se faisait et les variables qui en découlent n'étaient pas initialisées...

Ensuite, dans la procédure Sub LoadCmbBox(sCmbNam As String) :
Code:
If TypeOf oCtr Is MSForms.ComboBox5 Then
c'est le type du contrôle qui peut-être TextBox, ComboBox ou etc... mais en aucun cas une ComboBox5. Enlève le 5 (dans le MsgBox quelques ligne dessous aussi même si ça ne fait pas planter le code).
Code:
If TypeOf oCtr Is MSForms.ComboBox Then

Puis, dans la même procédure tu as :
Code:
iDrnLig = Feuil1.Range(UCase(oCtr.Tag) & Rows.Count).End(xlUp).Row
or la propriété [Tag] de la ComBox5 est vide ! Ça fait planter la ligne au dessus

Je me suis arrêté là. mais je pense qu'avant de demander de l'aide tu devrais faire touner ton code pas à pas et voir ce qui cloche. Après tu viens et on en parle...
 
Dernière édition:

mhz

XLDnaute Junior
Re : erreur d'exécution 424

Je voudrais que ma ComboBox5 mémorise les infos que je rentre pour que je puisse les retrouver la prochaine fois que je rentre des données dans mon tableau via le formulaire (ctrl+k).

Pour parler en français (que je comprend beaucoup mieux par rapport au vba) je gère des demandes d'aides et ce sont le noms des structures ou des sportifs que je veux rentrer à chaque nouvelle demande d'aide. je souhaiterais donc que la combo mémorise les données pour je puisse les retrouver soit en tapant le début des lettres ou en recherchant dans une liste.

Je m'arrache les cheveux avec cette histoire :/
 

mhz

XLDnaute Junior
Re : erreur d'exécution 424

J'avais mis A dans propriété tag de la combobox5 mais je l'ai pas laissé en pensant que c'était une erreur..
Du coup, si je comprend bien (d'après ce que j'ai trouvé comme info sur cette propriété) "Tag" peut être ce qu'on veut ? Je peux mettre A (la colonne ou je veux que mes informations se génèrent dans le tableau) de mon tableau sans que ça bug ?

Justement j'utilise l'outil débogage mais je comprend pas toujours comment régler les problèmes.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : erreur d'exécution 424

Bonjour le fil, bonjour le forum,

Oui, tu peux mettre ce que tu veux dans la propriété [Tag]. Cela permet, comme dans ton exemple, de renvoyer les données d'un contrôle dans la bonne colonne. Surtout quand on utilise une boucle et que les contrôles ne sont pas rangés dans le même ordre que les colonnes qui reçoivent leur donnée.
Si je comprends bien le code orignal n'es pas de toi et tu galères pour l'adapter... Je vais essayer de regarder ça en détail et te proposer une solution fiable.
 

mhz

XLDnaute Junior
Re : erreur d'exécution 424

Oui c'est exact j'ai appel à de l'aide pour réussir à mettre en place ce formulaire et je galère pas mal.
Après le code est peu être compliqué par rapport à ce que je veux faire :
que la combo5 mémorise les infos que je rentre et que je puisse les retrouver quand j'ouvre à nouveau le formulaire.

Bonne journée !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : erreur d'exécution 424

Bonjour le fil, bonjour le forum,

Mon soucis majeur c'est que je n'ai pas sur ma machine le contrôle DTPicker. Tu devras donc impérativement commencer par rajouter ces 3 contrôles dans l'UserForm1 et leur attribuer la propriété [Tag] égale à 2 pour le DTPicker1 / 9 pour le DTPicker2 et 13 pour le DTPicker3. Je n'ai donc pas pu tester ces trois contrôles mais je pense que ça devrait fonctionner normalement. Chez moi, les lignes de code qui les concernent sont commentées pour les empêcher d'agir...

J'ai beaucoup remanier l'UserForm1 en ordonnant les contrôles et en en rajoutant 2 qui manquaient : OBSERVATIONS et SUBVENTION DONNÉE (?). Si il ne fallait pas les rajouter, tu peux les supprimer sans avoir à modifier le code. Ça n'aura aucune incidence...
J'ai remplacer la propriété [Tag] qui correspondait aux lettres des colonnes (A, B, C... etc) par leur numéro. Ça oblige à la convertir en Byte mais c'est, a mon sens, plus simple à utiliser.
J'ai supprimer/modifier pas mal de choses qui étaient très bien mais ne me convenaient pas.

Maintenant quand tu choisis un demandeur dans la ComboBox1, si il existe déjà, à la sortie de la cette ComboBox1, les données sont récupérées et dispatchées dans leur contrôle respectif. Le bouton VALIDER se change en MODIFIER. Tu peux ainsi modifier une donnée erronée.
En revanche, si tu tapes un nom qui n'existe pas, les contrôles restent vides attendant leur donnée. Le bouton devient alors VALIDER.

Si tu tape un Nº SIRET/APE déjà existant, un message te le signale et te propose de continuer ou bien de taper un nouveau numéro. Idem avec le nom de la personne responsable.

À tester pour voir les bugs et les corriger...

Le fichier :
 

Pièces jointes

  • Mhz_v01.1.xlsm
    83.7 KB · Affichages: 35

Discussions similaires

Réponses
14
Affichages
898
Réponses
5
Affichages
249