Macro excel
Résoluvoila j'ai fait une sorte de petit dessin avec enregistreur de macro.
mon problème est que je veux que quand je coche sur boutonoption1 dans un user form que le dessin apparaisse sur la feuille 2. Présentement jarrive qua le faire apparaitre dans la feuille 1
merci de bien vouloir m'aider. jai essaye avec worksheets ("feuil2").select avant chaque ligne et ca ne fonctionne pas
ActiveSheet.Shapes.AddLine(117#, 232.5, 156#, 232.5).Select
ActiveSheet.Shapes.AddLine(59.25, 293.25, 156#, 293.25).Select
ActiveSheet.Shapes.AddLine(156#, 232.5, 156#, 292.5).Select
Welection.ShapeRange.Flip msoFlipHorizontal
ActiveSheet.Shapes.AddLine(367.5, 240#, 390#, 240#).Select
ActiveSheet.Shapes.AddLine(390#, 240#, 390#, 292.5).Select
ActiveSheet.Shapes.AddLine(312#, 292.5, 390#, 292.5).Select
Selection.ShapeRange.Flip msoFlipHorizontal
End If
Configuration: Windows XP Internet Explorer 7.0
29 réponses
Le sujet concerne l'exécution d'un code VBA où la sélection d'un bouton Option dans un UserForm doit dessiner sur la Feuille 2, pas sur la Feuille 1. Plusieurs réponses recommandent de cibler Feuil2 dans le code (Sheets("Feuil2").Select ou Shapes), de nettoyer les traits et d'utiliser des événements Workbook pour effacer à l'ouverture. Des conseils concernent l'organisation du code afin d'éviter l'explosion de procédures, en plaçant la logique commune après If..., ou en stockant des actions dans un module. D'autres échanges évoquent des alternatives visuelles comme personnaliser des boutons ou gérer des déclencheurs via CheckBox, indiquant que l'effacement dépend des choix d'ouverture et fermeture.
-
Salut,
Tu cherchais des boutons personnalisés, sur le net tu en as des centaines libre de droit, saisis bouton GIF animé
Pour t'amuser récupères le fichier avec le lien ci dessous
https://www.cjoint.com/?mbpMA1C4x2
A+ -
Cherche un liste sur le net juste des icone comme Fenetre, Porte. Jai creer un macro avec un bouton quand tu clic dessu ca fait apparitre une fenetre que tu peux positionner. Mais j'ai pas trouvé une sorte de fenetre donc jutilise un bouton clic,
Donc voila je sais que je peux en dessiner un mais bon ca fait pas super
jen ai trouvé comme je cherchais mais faut les payer 70$
un peu exageré
A+++++
Si tu trouve fais moi savoir mais bon cest pas une priorité -
Ok encore merci cest parfais jy vais avec ca.
Derniere question lolll pour le moment
Connais tu la maniere d'ajouter des icone pour personaliser les bouton macro, autre que ceux que la suite office.
Ce que j'aimerais c'est un bouton macro style une fenetre une porte un peu comme les logiciel Architecte emploi.
Encore merci pour tout j'ai plus appris en te lisant que dans tout les bouquins que j'ai lu
Jeff-
Il est possible de te créer des boutons personnalisés, j'ai déjà fais cela il y a bien longtemps mais je vais rechercher et te dirai comment faire.
Autrement tu prends une photo, tu l'enregistres avec un logiciel de retouche dimension 32 sur 32 pixels au format .bmp ensuite tu clique sur cette photo et tu change l'extensionpar .ico et ça marche.
Autrement que cheches tu comme style de bouton
A+
-
-
-
Ok j,ai fais comme tu mas dit plus haut mais en creant des module ca vas pas trop grossir mon fichier???
-
Salut Mike bon Jeudi
As tu reussi a trouver le temps pour me faire un fichier exemple du premier fichier envoyé???
Bon pour mon 2ieme tout marche à la perfection. Quelle connerie davoir oublié que j'avais masqué mes feuilles.
Bon aller je te dérange pas plus longtemps je vais aller enlever la neige sur la voiture si je veux aller au boulot
A+++
Jeff -
Salut,
Après impression, je pense que tu remets tes checkbox en false
En associant les cellules, pour terminer ton code juste avant End If, tu pourrais mettre
Range("A1:A10").Value = True
Si tes cellules associées sont A1 à A10 par exemple
A+ -
cest exactement ca que jai fais mais sans associé une cellule voila ce que ca donne
if optionbutton1.value = True Then
Sheets("Feuil2").Visible = True
Worksheets("feuil2").PrintOut
Sheets("Feuil2").Visible = False
End If
et ca fonctionne bien
merci encore d'être tjours aussi patient et présent -
C'est pour cela que chez moi tout marchait vu que je n'avais les feuilles et celle que j'ai créée marchait bien.
J'ai revu ton code, pour intégrer l'affichage des feuilles sélectionnées pour l'impression et les remasquer tu dois revoir ton code qui sera plus stable. chaque Checkbox doit être associé à une cellule, ça peut être la cellule sous la checkbox ou même une cellule colorée en vert dans ta feuille, il suffit de mettre la couleur police identique.
Donc pour associer chaque checkbox à une cellule, tu te mets en mode création et double clic sur chekbox cela va t’ouvrir une page code VBA avec la fenêtre des propriétés tu vas trouver dans la liste LinkedCell en face tu saisis la référence de ta cellule exemple A1
Ensuite tu revois ton code pour afficher la feuille concernée, l’imprimer et la remasquer
A la place de faire référence à checkbox1 etc tu fais référence à ta cellule
If Range("A1") = True Then
Sheets("Feuil2").Visible = True
Worksheets("feuil2").PrintOut
Sheets("Feuil2").Visible = False
End If
A+ -
hahaha j'ai trouvé mon problème j'avais masqué les feuilles
donc quand on masque les feuille impossible d'imprimé ???? -
oui je sais je ne trouve vraiment pas le problème
voci erreur
erreur execution 1004
la méthode Prinout de la classe worksheet a échoué
comprend pas -
Salut,
Je ne vois pas d'erreur sur le code, si j'ajoute une feuille et allonge ton code pour la prise en charge de cette feuille vu que tes feuilles sont manquante ce qui est tout à fait normal l'impression marche nickel.
Ce que je n'ai pas pu tester, c'est le calendrier que je n'ai pas sur ma bécane, contrôle à ce niveau là
A+ -
Mike je te joint un autre petit programme. Le principe est simple je choisis un date sur le calendrier je coche les case que je veux imprimer et ca imprime des feuilles de temps pour les employés.
Tout fonctionnais très bien et depuis 2 jours jai une erreur
Tout semple ok donc je comprend pas l'erreur. je te laisse voir ce que tu en pense
Jeff
merci de ta patience
http://www.cijoint.fr/cjlink.php?file=cj200811/cij9eJBspD.xls -
Salut,
Excuses pour le retard, je viens de regarder ton code qui est déjà pas mal concentré.
Je pense que tu aurais intérêt à scinder tout cela en petites macros plus facile à gérer et surtout plus facile à modifier dans le futur.
Exemple tu crées un module par insertion/module
Puis tu crées une macro Sub Action_Une () à la place d’action un tu mets l’intitulé qui te parle le mieux, mais sans espace
cela va te générer automatiquement la fermeture de ton code par
End Sub
Entre ces deux lignes tu places tout le code correspondant à ta première OptionButton1 et ainsi de suite pour tous les boutons
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Action_Une et dans ton code allégé tu saisis le nom de ta macro
Action_Deux
Ici tu peux reposer une conditionnelle If xxxxxxxx then
Action_trois
Action_quatre etc …
End If
End Sub
De plus tu peux créer d’autre module et les nommer pour faciliter leurs accès plus rapidement
Je modifie ton fichier comme exemple et te l’envoie dans la soirée
A+ -
Je comprend ce que tu me dit mais c'est pas ca mon problème jai un peu de misère à expliquer, je vais essayer encore
Jai des bouton option Exemple 1 a 5 chacun a leur variante mais tous ont aussi des meme valeurs.
La maniere que jai fait Exemple
Ifoptionbutton1.value=True Then
des valeurs que pour lui
end if
Ifoptionbutton2.value=True Then
des valeurs que pour lui
end if
Des valeur pour les 2 bcoup de code
donc ici je dois finir avec quelque chose avant de poursuivre avec dautre bouton moi jai mis EndIf erreur sans bloc if
Ifoptionbutton3.value=True Then
du code
end if
ici je voudrai mettre encore du code pour tout les bouton ( je cest je peux les mettre a chaque bouton mais comme cest environ 50 lignes de code je voudrais les mettre pour tout les bouton.
http://www.cijoint.fr/cjlink.php?file=cj200811/cijw3oQSUL.xls
Tiens voici un exemple tres détaillé entre dans le userform yamaska le boutonclick
Ps si ta dautre idée de la maniere de le faire ne te gêne pas et dit moi
Jeff -
Salut,
J'ai du mal à te suivre, mais tu peux également écrire le code comme ci dessous regrouper les end if soit à la fin de ton code ou à la fin de ta condition IF tu peux également dans une condition IF et End If cumuler plusieurs conditions If
Ifoptionbutton1.value=true then
Sheets("feuil2").Select
Range("C16").Value = "4/12"
If OptionButton2.Value = True Then
Sheets("feuil2").Select
Range("C16").Value = "6/12"
end if
end if
tu les écrit comme tu parles exemple si j'ai ça je fais ça ou ça tu peux également utiliser la condition sinon (Else)dans le cas ou la condition If n'est pas rempli
exemple If optionbutton1.value=true then
Sheets("feuil2").Select
Range("C16").Value = "4/12"
Else
Range("X16").Value = "4/12
End if
J'espère que ces conseils te seront utiles
A+ -
Non Mike parce que jai pris ton code et je l'ai adapté donc tout fonctionne, mes boutons validés je les aies mis dans des userform qui s'ouvre avec la validation Oui dans une boite de dialogue EX: Boite de dialogue : voulez vous ajouter une couleur "oui" userform souvre avec les choix de couleurs, je choisi , je valide et je continue.
Donc je crois bien que ta répondu à mes questions.
Et par la même occasion je vais dire un GROS MERCI a tout ceux qui nous vienne en aide et qui prenne le temps de répondre à nos questions et qui sont patient comme Mike-31, Lermitte, gbinforme et Beaucoup d'autres.
Merci les boys
Jeff -
ca fonctionne mais trop bien car ca enleve les trait mais egalement mes 8 boutonclick qui servfe à valider des opérations.
mais merci je vais pouvoir men sortir avec ca-
dis moi tous ce que tu as sur cette feuille en détail, et ce que tu veux supprimer ou garder.
Il est difficile de créer un code avec des fracments de données
ou encore mieux mets un modéle avec ces anotations sur le forum que l'on voit
le lien
https://www.cjoint.com/
A+ -
@Mike-31Salut Mike
Jai un autre info à te demandé si tu n'est pas trop occupé....
J'utilise les bouton option et j'ai exemple 5 bouton qui a des variante mais qui ont la même base et ensuite jai dautre bouton option que tout change. Donc ce que je fesais c'est a chaque bouton je mettais les variante et à la fin des 5 bouton apres le end if jai mis tout ce qui ne change pas pour les 5 boutons et la je repartais avec un autre bouton option6, le probleme cest que juste avant les bouton option 6 je ne peux pas mettre un end if puisque je l'utilise à la fin du bouton 5. Je cest pas si tu me comprendra donc je vais faire un petit exemple.
Ifoptionbutton1.value=true then
Sheets("feuil2").Select
Range("C16").Value = "4/12"
end if
If OptionButton2.Value = True Then
Sheets("feuil2").Select
Range("C16").Value = "6/12"
end if
ici ce qui reste attribué à cest 2 boutons donc bcoup de code
ET JE VOUDRAIS QUE CE SOIT QUE POUR CEST 2 BOUTON donc mettre un autre END IF
et reparir avec un
Ifoptionbouton3.Value = True Then
as tu une idée de ce que je peux faire ??
Bon je sais que je peux mettre le code a chaque bouton mais comme ca fais bcoup de code ......
-
-
Salut,
Mets ce code dans ThisWorkbook
Private Sub Workbook_Open()
Sheets("Feuil2").Cells.ClearContents ' cette ligne supprime le contenu des cellule sur la feuille 2
For Each obj In Sheets("Feuil2").Shapes
ActiveWorkbook.Sheets("Feuil2").Shapes(1).Delete ' cette ligne supprime les traits sur la feuille 2
Next obj
End Sub
Ce code effacera le contenu de ta feuille2 à l'ouverture de ton classeur. Si tu le programme à la fermeture, tu auras une confirmation d'enregistrement même si tu viens d'enregistrer. si tu reponds oui l'effacement est opéré si tu réponds non il est ignoré, alors qu'a l'ouverture tout est automatisé. Reste à savoir si tu souhaites contrôler cet effacement dans ce cas le plus simple serait de créer sur bouton sur une feuille différente et de coller ce code dans un module macro
A+ -
Non comme jai mentionné plus haut ma feuille 2 est une trame donc un modele predefin ou sajoute tout dépendant des bouton option que je clic des couleurs des modèle different etc .......
donc je ne peux pas supprimer la page
- 1
- 2