Boucle sur commandbutton & userform à éviter

J0K068 26 Messages postés mercredi 23 février 2011Date d'inscription 16 octobre 2017 Dernière intervention - 12 oct. 2017 à 20:50 - Dernière réponse : f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention
- 19 oct. 2017 à 13:10
Bonjour,

Je vais tenter d'explique mon problème, ci-joint mon fichier.
J'ai supprimé un plan correspondant à mon travail.
Userform1 est toujours actif et me sert de fenêtre de travail.
J'ai des commandbutton renomés lorsque là V1, V2, V3 etc etc etc et d'autres avec d'autres noms suivront lorsque j'aurais trouvé la solution à mon problème.
Lorsque je clic sur l'un d'entre eux, si ce dernier est vert alors il ouvre l'userform2 pour le mettre en rouge. S'il est à l'inverse rouge, il ouvre l'useform3 pour le mettre en vert.
Cependant à la fin de ce dernier, il réouvre automatiquement et celà sans fin l'userform2 pour le remettre en rouge.
Je ne trouve pas la solution à ce problème bloquant.
Je suis certain que c'est une petite erreur ....
Google déjà consulté bien entendu !
merci pour votre aide, je suis débutant en vba.
Ici : http://www.cjoint.com/c/GJmsXOdzSUY




--
Afficher la suite 

38 réponses

Répondre au sujet
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 13 oct. 2017 à 07:02
0
Utile
Bonjour,

MonBout est le nom du Bouton pas un Control

Fichier modifie: http://www.cjoint.com/c/GJnfccqjOqf
Commenter la réponse de f894009
J0K068 26 Messages postés mercredi 23 février 2011Date d'inscription 16 octobre 2017 Dernière intervention - 13 oct. 2017 à 12:41
0
Utile
2
Salut f894009,
tout d'abord merci, je pensais que ce n'était pas grand chose.
J'ai vu les modifications pour l'appeler l'userform.
Tu as peut être vu d'autres erreurs dont je suis preneur, tant que ça ne ralenti pas ce dernier et que surtout ça facilite l'écriture des autres à venir ...
Tu as peut être remarqué que le multipage ne s'affichait pas correctement, mais aussi que si tu changes de pages, par moment il disparait ...
Tu aurais également la solution à ce problème éventuellement ?

Encore merci pour mon dépatouillage des commandbutton's....

--
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 13 oct. 2017 à 12:48
Re,

Je regarde la chose. Ceci-dit je n'ai pas un ecran geant, donc je vais faire des modif pour tester
A+
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention > f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 13 oct. 2017 à 13:50
Re,

fichier modifie pour probleme pages Multipage non vislbles: scroll userform1 sur affichage, changement de page Multipage

https://mon-partage.fr/f/nUlK7ZVp/
Commenter la réponse de J0K068
J0K068 26 Messages postés mercredi 23 février 2011Date d'inscription 16 octobre 2017 Dernière intervention - 13 oct. 2017 à 19:59
0
Utile
Un énorme merci !!!!!
C'est vraiment bien de maitriser ce qu'on veut faire, je vous envie très franchement ....
Personnellement pas le temps à tout ça, j'essai de faire des choses qui au final restent simple ....
[RESOLU]
--
Commenter la réponse de J0K068
J0K068 26 Messages postés mercredi 23 février 2011Date d'inscription 16 octobre 2017 Dernière intervention - 15 oct. 2017 à 09:44
0
Utile
Bonjour,
Je me permets de poursuivre ....
Dans ce que tu as modifié, je souhaite utiliser MonBout pour lancer une macro dont le nom serait associé ...
Je vais avoir tellement de commandbutton et de choses à réaliser qu'en fait je pense qu'organiser le travail par des macros c'est le plus simple ....
Là, le problème c'est que vu que je ne maitrise pas VBA, j'ai des soucis avec les IF et ce qui va avec, ça relis constament et refait les actions alors que je ne souhaite pas que ça se passe .... bref
Si je fais :
run monbout
Ceci me dont erreur d'execution 1004, impossible d'executer la macro 'V3' il est possible qu'elle ne soit pas disponible dans ce classeur .....
Bref, est ce que ça vient du fait que ce soit un objet ?
Merci

--
Commenter la réponse de J0K068
J0K068 26 Messages postés mercredi 23 février 2011Date d'inscription 16 octobre 2017 Dernière intervention - 15 oct. 2017 à 10:59
0
Utile
18
Bon j'ai enfin trouvé une autre solution, je passe par le commandbutton_click directement sauf que je dois renomer le call V3 en call Vanne3 .... Pas des soucis là dessus, un peu d'écriture mais rien de gênant ...
Merci (j'ai cherché toute la nuit et ce matin aussi d'où le post ! ;)
Bonne journée !

--
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 17 oct. 2017 à 18:21
En effet tout est fait !
Si j'appui sur un SEG1A alors il ne se passe rien.
Si j'appui sur un P1 ou PMHP1 alors j'ouvre un userform spécifique (non créé encore) où je retrouve des informations sur les vannes et où je peux les mettre en position fermée cassée par exemple avec un texte que l'utilisateur rentrerais.
Il faudrait que monbout ai l'info qu'il agisse que sur les V pour l'UF 2 et 3, et les P pour l'UF à créer ...
Actuellement il peut les mettre en rouge ou vert sauf qu'ils sont transparent à la base, donc ça ne va pas... à condition de créer une macro du même nom comme les V...
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 17 oct. 2017 à 19:04
Ca donnerait quelque chose comme ça :

Private Sub Cmd_Click()
MonBout = Cmd.Name
Sheets("info").Range("B1").Value = MonBout
If MonBout = "SEG" & "" Then
Exit Sub
elseIf MonBout = "V" & "" Then
'OuvreFerme:
If UserForm1.Controls(MonBout).BackColor = vbGreen Then
UserForm2.Show 'fermer vanne
ElseIf UserForm1.Controls(MonBout).BackColor = vbRed Then
UserForm3.Show 'ouvrir vanne
End If
Application.Run "Vanne" & Replace(MonBout, "V", "") 'lancer une macro par son nom
ElseIf MonBout = "P" & "" Then
UserForm5.Show
End If
End Sub
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention > J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 17 oct. 2017 à 20:02
Re,

Private Sub Cmd_Click()
    MonBout = Cmd.Name
    Sheets("info").Range("B1").Value = MonBout
    If Left(MonBout, 1) = "V" Then
        'OuvreFerme:
        If UserForm1.Controls(MonBout).BackColor = vbGreen Then
            UserForm2.Show 'fermer vanne
        ElseIf UserForm1.Controls(MonBout).BackColor = vbRed Then
            UserForm3.Show 'ouvrir vanne
        End If
        Application.Run "Vanne" & Replace(MonBout, "V", "")      'lancer une macro par son nom
    ElseIf Left(MonBout, 1) = "P" And Left(MonBout, 2) <> "PM" Then
        UserForm5.Show
    End If
End Sub
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 17:47
Pourriez vous m'expliquer le :

If Left(MonBout, 1) = "V" Then


SVP ? Parce que je vois que j'étais loin du compte finalement ... lol !!!
J'insiste sur le "merci" pour le suivi de mon projet qui n'est qu'en fait qu'une goutte d'eau dans l'idée globale à réaliser.
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 17:52
Bon,
je viens d'acheter un nouvel ordinateur ce matin .... Problème de vieillesse sur les précédents ....
Du coup à l'ouverture, l'UF est impossible car version 64 bits ... et cette partie du code est demandé d'être revu avec "PTRSafe" en "Declare" .... :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Commenter la réponse de J0K068
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 18:39
0
Utile
1
Désolé, troisième réponse qui ne s'affiche pas ... bon ! journée de m**** !
Après des recherches et une modif l'UF s'ouvre sur le 64 et 32 .... Cool ;)
'ajouter l 'option zoom sur userform1
Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long


Par contre erreur dans les deux versions sur votre code ... :

If Left(MonBout, 1) = "V" Then

Une idée ? Je n'avais pas testé sans passer avant par la modif du 64/32 ....
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 18 oct. 2017 à 19:10
Bonjour,

If Left(MonBout, 1) = "V" Then

teste si la premiere lettre a gauche de MonBout est egale a "V"

Quelle erreur avez vous?? Parce que chez moi y a pas d'erreur

Coabition 64/32 pour les API
' --- DECLARATION API WINDOWS
#If VBA7 Then
  Private Declare PtrSafe Function ShellExecute _
    Lib "shell32.dll" _
    Alias "ShellExecuteA" ( _
      ByVal hwnd As LongPtr, ByVal lpOperation As String, _
      ByVal lpFile As String, ByVal lpParameters As String, _
      ByVal lpDirectory As String, ByVal nShowCmd As Long) _
    As LongPtr
#Else
  Private Declare Function ShellExecute _
    Lib "shell32.dll" _
    Alias "ShellExecuteA" ( _
      ByVal hwnd As Long, ByVal lpOperation As String, _
      ByVal lpFile As String, ByVal lpParameters As String, _
      ByVal lpDirectory As String, ByVal nShowCmd As Long) _
    As Long
#End If
Commenter la réponse de J0K0
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 19:03
0
Utile
Bon, le fichier ouvre bien l'UF mais pas toujours ... des fois les DLL sont manquantes et donc plante le fichier ...
La galère !
Je me dis qu'il faudrait quand même ajouter cette probabilité ... Je suppose que de plus en plus les ordinateurs passeront en 64 bits ...
Je sens que je vais galérer encore ! :(
En attendant, je ne sais pas si on peut se parler en privé, ça serait bien, j'avais une question à poser.
Merci
Commenter la réponse de J0K0
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 19:14
0
Utile
9
J'ai bien trouvé cette cohabitation mais je le mets où ?
Où que je le mette ça ne fonctionne pas ...
MErci
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 21:20
ok je vais voir pour éventuellement downgrader de version du coup ...
Petite question : puis je utiliser l'option left pour sélectionner tous les controls d'un même début de nom ?
Ou dois je procéder différemment ?
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention > J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 19 oct. 2017 à 08:02
Bonjour,
Vous ne repondez pas a la question Office 64 ou 32 bits??

puis je utiliser l'option left pour
Ben, dans le code que j'utilise ca le fait, donc .....
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 19 oct. 2017 à 11:40
Bonjour,
quelle nuit .... Bon pendant que je faisais une install de la version 2010 - 32 bits sur le pc (new), j'ai lancé après coup en réalité le fichier, qui marche à la perfection. J'ai presque envie de tester la désinstall pour voir ...
La version que j'ai est 2016 - 64 bits ....
J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 19 oct. 2017 à 11:54
Je confirme que c'est bein la version de 2010 - 32 bits qui me résolvait le problème de la compréhension de "left". Je réinstalle donc cette dernière ....
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention > J0K0 153 Messages postés lundi 7 mai 2007Date d'inscription 19 octobre 2017 Dernière intervention - 19 oct. 2017 à 13:10
Re,

Eh ben voila
Commenter la réponse de J0K0