Signaler

Boucle sur commandbutton & userform à éviter

Posez votre question J0K068 26Messages postés mercredi 23 février 2011Date d'inscription 16 octobre 2017 Dernière intervention - Dernière réponse le 19 oct. 2017 à 08:02 par f894009
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




--
Utile
+0
plus moins
Bonjour,

MonBout est le nom du Bouton pas un Control

Fichier modifie: http://www.cjoint.com/c/GJnfccqjOqf
Donnez votre avis
Utile
+0
plus moins
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 12303Messages postés dimanche 25 novembre 2007Date d'inscription 19 octobre 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+
Répondre
f894009 12303Messages postés dimanche 25 novembre 2007Date d'inscription 19 octobre 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/
Répondre
Donnez votre avis
Utile
+0
plus moins
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]
--
Donnez votre avis
Utile
+0
plus moins
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

--
Donnez votre avis
Utile
+0
plus moins
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 151Messages postés lundi 7 mai 2007Date d'inscription 18 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...
Répondre
J0K0 151Messages postés lundi 7 mai 2007Date d'inscription 18 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
Répondre
f894009 12303Messages postés dimanche 25 novembre 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
Répondre
J0K0 151Messages postés lundi 7 mai 2007Date d'inscription 18 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.
Répondre
J0K0 151Messages postés lundi 7 mai 2007Date d'inscription 18 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

Répondre
Donnez votre avis
Utile
+0
plus moins
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 12303Messages postés dimanche 25 novembre 2007Date d'inscription 19 octobre 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
J'ai bien trouvé cette cohabitation mais je le mets où ?
Où que je le mette ça ne fonctionne pas ...
MErci
J0K0 151Messages postés lundi 7 mai 2007Date d'inscription 18 octobre 2017 Dernière intervention - 18 oct. 2017 à 20:34
Je suis au boulot mais j'ai accès à distance à mon pc : processeur M3 64bits et VBA 7.1 v.1048 excel 2016.
Hmmmm il me semble que j'avais déjà une panique à bord à cause de cette version ....
Pour l'erreur de monbout il me surligne le left.
Répondre
J0K0 151Messages postés lundi 7 mai 2007Date d'inscription 18 octobre 2017 Dernière intervention - 18 oct. 2017 à 20:47
Bon :
C'est pénible de l'un à l'autre ça diffère :
Sur le PC du boulot VBA 7.0 ça fonctionne, j'ai trouvé pour la cohabitation, je l'ai mis dans thisworkbook.
J'ai modifié la partie zoom où il faisait des erreurs dès l'ouverture comme indiqué au 28 ème message.
Je confirme votre proposition fonctionne à merveille. MERCI !
Chez moi sur ce nouveau pc le code left n'est pas compris : l'erreur est projet ou bibliothèque introuvable.
Je ne comprends pas.
Répondre
f894009 12303Messages postés dimanche 25 novembre 2007Date d'inscription 19 octobre 2017 Dernière intervention - 18 oct. 2017 à 21:05
Re,
Si problème de DLL, va être laborieux pour continuer sur ce PC. Office 32 ou 64bits
Répondre
J0K0 151Messages postés lundi 7 mai 2007Date d'inscription 18 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 ?
Répondre
f894009 12303Messages postés dimanche 25 novembre 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 .....
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !