1 seul Userform pour plusieurs CommandButton

Bonjour,

Est-il faisable d'utiliser 1 seul Userform avec plusieurs Commandbutton, sachant que les information validées dans le Userform par le CommandButton1 doivent se mettre dans la cellule K08, alors que les informations validées dans ce même Userform appelé par le CommandButton2 se reporteront dans la cellule K09 ?

Ou dois-je obligatoirement créer un Userform par CommandButton ?

Voici ce que j'ai pour mon Userform:

Private Sub CommandButton1_Click()

'bouton valider

[K10].Select

For k = 1 To ListBox1.ListCount - 1

If ListBox1.Selected(k) = True Then

tx = IIf(tx = "", ListBox1.List(k), tx & Chr(10) & ListBox1.List(k))

End If

Next

Application.EnableEvents = False

If xx <> "" And tx = "" Then ActiveCell.Value = xx

If xx = "" And tx <> "" Then ActiveCell.Value = tx

If xx <> "" And tx <> "" Then ActiveCell.Value = xx & Chr(10) & tx

If xx = "" And tx = "" Then ActiveCell.Value = ""

fin:

Application.EnableEvents = True

Unload UserForm3 'on ferme le formulaire

End Sub

Private Sub CommandButton2_Click()

Unload UserForm3 'on ferme le formulaire

End Sub

Private Sub CommandButton3_Click()

For k = 0 To ListBox1.ListCount - 1

ListBox1.Selected(k) = True

Next

End Sub

Private Sub CommandButton4_Click()

For k = 0 To ListBox1.ListCount - 1

ListBox1.Selected(k) = False

Next

End Sub

Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii = 27 Then Unload UserForm2

End Sub

Private Sub UserForm_Activate()

Me.ListBox1.List = Feuil4.[C2:C51].Value

PauseTime = 1 ' Définit la durée.

Start = Timer ' Définit l'heure de début.

Do While Timer < Start + PauseTime

DoEvents ' Donne le contrôle à d'autres processus.

Loop

UserForm3.ListBox1.Enabled = True

ListBox1.SetFocus

End Sub

En vous remerciant de vos lumières.

Cordialement,

Whatesle

Bonjour Whatelse

1) Oui, tu peux utiliser un seul userform avec plusieurs commandbutton

2) Quand tu mets du code , utilise la balise </> , ton code sera plus lisible

3) et ton fichier ou un extrait de ce fichier nous aidera à t'aider

Merci pour nous et pour toi!!!

A +

Bonjour Patty,

Je recommence avec la forme

Et mets mon fichier en construction en pièce jointe. Evidemment j'aurais des Commandbutton jusqu'en bas de mon tableau.

Private Sub CommandButton1_Click()
'bouton valider
[K10].Select
For k = 1 To ListBox1.ListCount - 1
 If ListBox1.Selected(k) = True Then
 tx = IIf(tx = "", ListBox1.List(k), tx & Chr(10) & ListBox1.List(k))
 End If
Next
Application.EnableEvents = False
If xx <> "" And tx = "" Then ActiveCell.Value = xx
If xx = "" And tx <> "" Then ActiveCell.Value = tx
If xx <> "" And tx <> "" Then ActiveCell.Value = xx & Chr(10) & tx
If xx = "" And tx = "" Then ActiveCell.Value = ""
fin:
Application.EnableEvents = True
Unload UserForm3 'on ferme le formulaire
End Sub

Private Sub CommandButton2_Click()
Unload UserForm3 'on ferme le formulaire
End Sub

Private Sub CommandButton3_Click()
For k = 0 To ListBox1.ListCount - 1
ListBox1.Selected(k) = True
Next
End Sub

Private Sub CommandButton4_Click()
For k = 0 To ListBox1.ListCount - 1
ListBox1.Selected(k) = False
Next
End Sub

Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 27 Then Unload UserForm2
End Sub

Private Sub UserForm_Activate()
Me.ListBox1.List = Feuil4.[C2:C51].Value
  PauseTime = 1    ' Définit la durée.
    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + PauseTime
        DoEvents    ' Donne le contrôle à d'autres processus.
    Loop
UserForm3.ListBox1.Enabled = True
ListBox1.SetFocus
End Sub

A bientôt,

Whatelse

Bonsoir

ce fichier peut peut-être t'aider : j'ai rajouté 2 listbox et modifier le code du bouton valider pour me positionner sur la bonne ligne

Tu peux donc logiquement supprimer tes userform 2 et 3

Tiens-moi au courant

A+

Bonjour,

Merci Patty,

Sur ma version Excel2007 Fr, cela ne fonctionnait pas trop bien, j'ai réussi à le faire fonctionner, je le mets également si quelqu'un aurai rencontré le même problème que moi en tout cas, beau travai,l Patty comme d'hab.

ci-joint

EDIT : Note du 12 janvier 2018 à 10:13 ==> Attention le fichier une réouverture le lendemain plantage du fichier <==

crdlt,

André

Bonsoir André

Sympa d'avoir des compliments, surtout pour une retraitée comme moi!!!

Merci pour tes compliments et bonne année à toi

Bonne soirée

Bonjour Patty et André,

Merci beaucoup !!!! Vous êtes TOP !

Je vous souhaite une excellente journée !

Re-bonjour,

Bizarrement après téléchargement du fichier d'André et enregistrement sur mon ordi, j'ai complété quelques données dans les sous items.

Puis j'ai fermé Excel. Puis l'ai ré-ouvert. Et là, Excel plante. Il ne veut pas ouvrir le fichier. Excel ne répond plus.

Avez-vous une idée du pourquoi ?

En vous remerciant,

Cordialement,

Bonjour,

Je viens de tester est également l'erreur se produit cela a fonctionner plusieurs fois dans la journée d'hier, en le ré-ouvrant dès que j'ai vu ton post cela m'a fait la même chose que toi, ouverture impossible du fichier, sans doute une incompatibilité +une erreur de dll au chargement mais pas un pro dans la matière, apparemment un objet manquant

donc, hélas et j'en suis vraiment désolé, mon fichier est à foutre dans la corbeille illico presto

crdlt,

André

Salut,

Soit le mode Debogueur est activé et t'empêche de fermer les fichiers excels, soit une boucle infini à fait planter le processus Excel !

Fait un Ctr + Alt + Suppr Clique sur Gestionnaire de tâches, et vérifie si excel est ouvert, si c'est le cas, n'hésite pas à l'arrêter !

Si c'est un problème de dll, tu ne pourras rien y faire, l'erreur générique remontera à Windows !

Bonjour et merci beaucoup de ton intervention

Au départ lorsque j'ai modifié le fichier de Patty tout a commencé par là (voir image)

TimePause

mais bon

crdlt,

André

ztesttt

Je ne suis pas vraiment un spécialiste d'Excel, Timer fait référence à quoi ?

Elle renvoi :

"Un seul représentant le nombre de secondes écoulées depuis minuit. SyntaxeMinuterieRemarques Dans Microsoft Windows, la minuterie fonction retourne des parties fractionnaires d’une seconde. Sur Macintosh, la résolution de l’horloge est une seconde."

Vous êtes sur que :

    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + PauseTime
        DoEvents    ' Donne le contrôle à d'autres processus.
    Loop

Ne fait pas une boucle infini qui fini par planter ?

Bonjour à tous

Je viens de faire le même test chez moi, mais les 2 fichiers (le mien et celui d'André se rouvrent)

?????

As-tu essayé de rebooter ton ordi ?? et voir ensuite ???

Bon courage

Re,

Je viens de penser si le réglage du timing est défini à 1 heure et si l'on touche pas le fichier sans doute il doit se ré-ouvrir pour cela peut-être que tu as réussi à l'ouvrir le fichier

c'est l'userform activate qui déclenche l'erreur en fin de compte non ?

pour mettre une pause, j'ai vu cela :

Sub Wait() 
' Attendre 5 secondes 
Application.Wait Time + TimeSerial(0, 0, 5) 
' Continuer après la pause 
End Sub

se serai donc comme ceci à mettre non ?

' Attendre 10 secondes 
Application.userform Time + TimeSerial(0, 0, 10) 
' Continuer après la pause 

bien bizarre cela, Edit bon encore ce TimeSerial qui cause souci

Re

Perso je n'ai jamais mis de Pausetime...

Je viens de voir qu'il y en a un, mais je n'y suis pour rien!!!

Est-ce bien nécessaire ???

Bye

Re-bonjour à tous,

Merci de vos interventions.

Effectivement le fichier débloque au bout d'un certain temps, mais en mode "réparé". Puis me met une erreur de chargement de la DLL.

Le "PauseTime" était dans ce que j'ai pris dans un tuto. Étant une buse en Vba, j'ai laissé bien que me disant que ce code ne servait à rien.

Il me semble que le créateur, voulait compter le temps que mettait son script à exécuter la tâche demandée. Ce dont je me moque totalement

J'ai également fait Ctrl Alt supp, pour arrêter le processus d'Excel. Puis ai redémarré le fichier. C'est idem. J'ai redémarré l'ordi, résultat identique...

Je vais essayer de supprimer ce PauseTime.

Si vous avez d'autres idées...

Je pense avoir trouvé l'erreur de la DLL manquante. André travaille sur Excel 2016 et moi 2010.

Quand je suis dans VBA, je fais Outils, Références et là il me manque Microsoft Word 16.0 Object Library. Mais impossible de le décocher, il refuse à la validation.

D'après vous Est-cela qui fait merder Excel ?

Re,

@Whatesle, (j'sur Excel 2007), oui cette dll cause souci mais, il y encore des trucs qui ne fonctionne pas des variables non déclarés (mdr je viens de voir le post (lien ci-dessous)

https://forum.excel-pratique.com/viewtopic.php?t=96266

sujet fou et passionnant en même temps

crdlt,

André

Alors...

J'ai repris le fichier initial d'André. J'ai supprimé le script faisant référence à Word.

J'ai réussi à enlever le référence à Microsoft Word 16.0 et ai pu enregistrer sur mon disque dur sans problème.

J'ai ouvert et fermé plusieurs fois et ça fonctionne à merveille

Merci André, pour le lien, je l'avais trouvé également.

Cordialement,

Re,

Pourrais-tu stp. mettre le fichier que tu as, merci (tu peux re-éditer ton post aussi )

afin de voir si cela fait toujours pareil pour moi, même après redémarrage + Ctrl Alt sup

merci d'avance

Rechercher des sujets similaires à "seul userform commandbutton"