Initialiser formulaire

Bonjour le forum ,

Voila j'ai creer un formulaire, le soucis est que je n'arrive pas a l'initialiser...

Merci pour vos bonnes idées

73test.xlsm (23.06 Ko)

bonjour FRANCH TITI

il faut

Pour le bouton Nouveau contact :

Saisir le code avant End Sub de Private Sub CommandButton1_Click() (juste après End If) :

End If

Unload Me

UserForm.Show

End Sub

et pareil Pour le bouton Modifier :

End If

Unload Me

UserForm.Show

End Sub

bonne journée

771ca69100.xlsm (23.22 Ko)

Bonjour,

Erreur 1 : Private Sub UserForm_Initialize()

L'appel d'une procédure évènementielle est strictement codifié. En l'état aucune chance d'initialiser.

Erreur 2 : je te laisse le temps de voir apparaître l'incompatibilité de type, et de découvrir d'où ça vient...

Remarques :

- vbModeless n'est pas une bonne idée (si tu mets en place un formulaire, ce n'est en principe pas pour que l'utilisateur travaille sur la feuille pendant ce temps... !)

- Tes TextBox sont visibles à la conception : ils seront donc visibles à l'ouverture, inutile de les initialiser "visibles" ils ne le seront pas plus !

Cordialement

Ferrand

Bonjour MFerrand,

Je sais que j'ai une erreur au niveau de ma private sub mais je ne sais pas comment la gerer, je suis novice en vb ...

Ta Sub "initialize" n'est pas une procédure évènementielle du Userform, donc elle ne s'exécute pas à l'ouverture.

Pour éviter ce genre d'erreur, on n'écrit jamais soi-même la ligne d'appel :

  • dans la liste déroulante gauche, si tu cliques sur Userform, la procédure pour l'évènement par défaut de l'objet s'affiche. C'est le Click dont on se sert plutôt rarement...
  • le curseur étant sur cette procédure, dans la liste déroulante droite tu peux alors cliquer sur Initialize pour affiche la procédure qui t'intéresse, à l'intérieur de laquelle tu mets ton code.

Là tu vas voir apparaître une erreur dans ton code. Tu peux dire ce que tu en penses...

Pour le reste, je te rappelle mes remarques précédentes.

A+

Ferrand

Ok merci Ferrand je vais essayer ca

Bonjour, FRENCH TITI,

Je n'ai pas vu que vous aviez fermer votre message comme étant résolu,

Si vous le souhaitez, j'ai un programme tout fait qui vous attend,

j'attends de vos nouvelles.

Amicalement Pierrot

Bonsoir forum excel pratique

Je suis tres tres ravi de vous rejoindre

Mes excuses pour FRENCH TITI d'etre curieux

Pour apprendre ..svp si c'est possible de me faire comprendre pourquoi ça marche pas cette formulaire.

Merci d'avancce pour toutes suggestion

Cordialement

AKRAMI

Bonsoir AKRAMI

Tu lis ma réponse précédente, tu sauras pourquoi ça marche pas. Si tu as besoin d'explications supplémentaires, il faut dire sur quel point.

Ferrand

MFerrand a écrit :

Bonsoir AKRAMI

Tu lis ma réponse précédente, tu sauras pourquoi ça marche pas. Si tu as besoin d'explications supplémentaires, il faut dire sur quel point.

Ferrand

Bonsoir MFerrand

Merci pour votre reponse..

J'ai essaye de l'ecrire comme ça mais ça ne marche pas tjr ...

Private Sub UserForm_Initialize

Merci d'avance pour l'aide

AKRAMI

Si tu testes la procédure de French Titi et que tu as remplacé Private Sub initialize() par Private Sub UserForm_Initialize(), la procédure va s'exécuter à l'ouverture.

On s'en rend vite compte d'ailleurs, car avant il ne se passait rien, et là cela déclenche une erreur !

Alors qu'est-ce qu'il se passe ?

Salut MFerrand

M'a donne erreur d'execution "13" ....incompatibilité de type...

cordialement

AKRAMI

En effet, et je l'avais annoncé à l'intéressé en lui demandant ce qu'il en pensait, soit d'où à son avis pouvait provenir l'erreur.

Et toi qu'en penses-tu ?

MFerrand a écrit :

En effet, et je l'avais annoncé à l'intéressé en lui demandant ce qu'il en pensait, soit d'où à son avis pouvait provenir l'erreur.

Et toi qu'en penses-tu ?

Bonsoir MFerrand

J'ai essaye ..vraiment j'ai essaye mais j'ai pas reussi a vous donner la bonne reponse

Cordialement

AKRAMI

Tu ne dis pas ce que tu as essayé !?

Essaie de raisonner logiquement :

- la ligne sur laquelle cela bloque est l'ouverture (Show) du Userform

or il n'y a rien dans cette ligne qui soit de nature à bloquer, sauf si le Userform n'existe pas ou plus (mais je crois que là, sauf erreur, ce ne serait pas "incompatibilité de type" mais peut-être (?) "indice ne correspondant pas à la sélection")

un indice (au cas particulier de la manip. faite juste avant) est que le Userform s'ouvrait tant que la proc. Initialize ne s'exécutait pas, et maintenant qu'elle s'exécute (avant ouverture) l'ouverture n'aboutit pas.

- il y a donc lieu de regarder cette procédure, et à défaut d'une autre indice, de parcourir les lignes pour tenter de déceler une erreur qui serait passée inaperçue à l'écriture.

- Je sais que l'on peut peut passer facilement dessus plusieurs fois sans que cela heurte, mais à la première ligne après les déclarations de variables, on trouve :

Set Ws = Sheets(Feuil1)

On affecte à une variable objet Worksheet un objet feuille de calcul, très banal !

Mais on utilise une propriété pour renvoyer une seule feuille de la collection Worksheets du classeur qui se définit par un numéro d'index (Integer) ou un nom (String). "Feuil1" est sans doute le nom de la feuille, mais écrit sans les guillemets ce n'est plus une valeur texte (String). Utilisé sans guillemet cela renvoie à un objet (de la même façon que lorsque tu écris Userform1 sans guillemet, tu fais référence à l'objet).

Si on avait écrit Set Ws = Feuil1, cela aurait pu passer, à condition que Feuil1 soit le nom de code (CodeName) d'une feuille existante dans le classeur, et qui utilisé ainsi aurait renvoyé la feuille (peut être une autre que celle voulue d'ailleurs : Excel affecte par défaut au départ le même nom et nom de code, mais cette correspondance se perd au fil des ajouts et suppressions de feuilles).

Voilà, tu as la solution.

Bonne fin de soirée

Ferand

merci MFerrand

Un formidable leçon en vba de votre part..ça marche tres tres bien

Reste a comprendre ..."Bloc If sans end if" si on essaye a modifier un nom

Merci d'avance pour l'aide

AKRAMI

Oui c'est le cas ! (ce qu'annonce VBA ne pointe pas toujours vers l'erreur réelle mais là c'est le cas). C'est masqué parce que les déclarations de variables suivent cette ligne (au lieu d'être en début de procédure comme il est recommandé de pratiquer).

Là tu peux régler le pb en remplaçant vbYes par vbNo et en ajoutant après Then Exit Sub.

S'il y en a d'autres tu les cherche toi-même maintenant

MFerrand a écrit :

Oui c'est le cas ! (ce qu'annonce VBA ne pointe pas toujours vers l'erreur réelle mais là c'est le cas). C'est masqué parce que les déclarations de variables suivent cette ligne (au lieu d'être en début de procédure comme il est recommandé de pratiquer).

Là tu peux régler le pb en remplaçant vbYes par vbNo et en ajoutant après Then Exit Sub.

S'il y en a d'autres tu les cherche toi-même maintenant

Salut MFerrand

Merci pour tous

Merci pour vos formidables leçon

Mes excuses pour "FRENCH TITI" ..j'ai joue son role..je suis desole simplement je veux comprendre

Merci une autre fois MFerrand

AKRAMI

Pas de souci. Bonne continuation.

Bonjour Bonjour, FRENCH TITI, AKRAMI

Voilà le 3ème jour que je vous ai fais cette proposition de vous envoyer un fichier prêt à l'emploi.

N'ayant pas eu de vos nouvelles, je suis désolé de devoir fermer ce poste .

" Message envoyé"

Je n'ai pas vu que vous aviez fermer votre message comme étant résolu,

Si vous le souhaitez, j'ai un programme tout fait qui vous attend,

j'attends de vos nouvelles.

Amicalement Pierrot

Pierrot

Avatar de l’utilisateurCappe Pierre

Membre impliqué

Membre impliqué

Messages: 1094

Inscription: 24 Nov 2012, 14:02

Localisation: 1360 Perwez - Belgique francophonne

Version Excel: 2010

Bon dimanche à vous quand même

Pierrot

Rechercher des sujets similaires à "initialiser formulaire"