Macro excel

Résolu
Graphick Messages postés 118 Statut Membre -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

voila 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

  • 1
  • 2
  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Sur ton UserForm1 tu as certainement mis CheckBox à cocher alors précéde ton code par

    CheckBox1 = True

    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 tu as une erreur de saisie au début de ta ligne
    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

    A+
    0
  2. Graphick Messages postés 118 Statut Membre 9
     
    En réalité cest des bouton options et mon code fonctionne bien le seule probleme cest que je veux que mon dessin soit sur la feuilles 2 et non la feuille 1 et jusqua present je narrive pas a l'envoyer sur la feuille 2

    voici mon code au complet en gras cest le dessin que je veux sur la feuille 2

    Private Sub CommandButton1_Click()
    If OptionButton1.Value = True Then
    Worksheets("Feuil1").Range("H9").Value = "6X8"
    Worksheets("Feuil1").Range("C16").Value = "6/12"
    Worksheets("Feuil2").Range("A4,A101,A198,A292").Value = "6X8"
    Worksheets("Feuil2").Range("X4,X101,X198,X292").Value = "6/12"
    Worksheets("Feuil2").Range("A18").Value = "Corniche Avant et Arrière"
    Worksheets("Feuil2").Range("A20").Value = "2 MCX 8' 9"""
    Worksheets("Feuil2").Range("N18").Value = "Corniche de Côté"
    Worksheets("Feuil2").Range("N20").Value = "4 Mcx 48"""
    Worksheets("Feuil2").Range("G30").Value = "1""3/4"
    Worksheets("Feuil2").Range("I35").Value = "3"""
    Worksheets("Feuil2").Range("F40").Value = "3""1/4"
    Worksheets("Feuil2").Range("S31").Value = "3/4"""
    Worksheets("Feuil2").Range("U35").Value = "3"""
    Worksheets("Feuil2").Range("R40").Value = "2""1/4"
    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
    If OptionButton2.Value = True Then
    Worksheets("Feuil1").Range("H9").Value = "8X8"
    Worksheets("Feuil1").Range("C16").Value = "4/12"
    Worksheets("Feuil2").Range("A4,A101,A198,A292").Value = "8X8"
    Worksheets("Feuil2").Range("X4,X101,X198,X292").Value = "4/12"
    End If
    end sub
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    'Worksheets("Feuil1").Range("H9").Value = "6X8" 'as tu besoin de ces deux lignes
    'Worksheets("Feuil1").Range("C16").Value = "6/12"

    CheckBox1 = True
    Sheets("Feuil2").Select

    Worksheets("Feuil2").Range("A4,A101,A198,A292").Value = "6X8"
    Worksheets("Feuil2").Range("X4,X101,X198,X292").Value = "6/12"
    Worksheets("Feuil2").Range("A18").Value = "Corniche Avant et Arrière"
    Worksheets("Feuil2").Range("A20").Value = "2 MCX 8' 9"""
    Worksheets("Feuil2").Range("N18").Value = "Corniche de Côté"
    Worksheets("Feuil2").Range("N20").Value = "4 Mcx 48"""
    Worksheets("Feuil2").Range("G30").Value = "1""3/4"
    Worksheets("Feuil2").Range("I35").Value = "3"""
    Worksheets("Feuil2").Range("F40").Value = "3""1/4"
    Worksheets("Feuil2").Range("S31").Value = "3/4"""
    Worksheets("Feuil2").Range("U35").Value = "3"""
    Worksheets("Feuil2").Range("R40").Value = "2""1/4"
    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
    Selection.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
    0
    1. Graphick Messages postés 118 Statut Membre 9
       
      merci mike je venais juste de trouver la solution qui est la meme que toi sauf que sheetfeuille2.select est juste avant mon code pour le dessein car oui jai besoin des 2 code feuil 1

      mais merci

      A+++
      0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    ET POURQUOI NE PAS SIMPLIFIER LE CODE COMME CECI

    CheckBox1 = True
    Sheets("Feuil2").Select

    Range("A4,A101,A198,A292").Value = "6X8"
    Range("X4,X101,X198,X292").Value = "6/12"
    Range("A18").Value = "Corniche Avant et Arrière"
    Range("A20").Value = "2 MCX 8' 9"""
    Range("N18").Value = "Corniche de Côté"
    Range("N20").Value = "4 Mcx 48"""
    Range("G30").Value = "1""3/4"
    Range("I35").Value = "3"""
    Range("F40").Value = "3""1/4"
    Range("S31").Value = "3/4"""
    Range("U35").Value = "3"""
    Range("R40").Value = "2""1/4"
    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
    Selection.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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Graphick Messages postés 118 Statut Membre 9
     
    oui je vais le faire comme ca cest plus simple et plus clair

    as tu une suggestion pour ceci ca vas avec mon code

    Jai plusieurs bouton option dans des user form qui met en page une feuilles excel

    je veux que quand je ferme excel meme si ont clic enregistrer que tout s'éfface.

    Jai essayé ceci

    Option Explicit

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    userform1.Optionbutton1.Value = False
    userform1.Optionbutton2.Value = False
    End Sub
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Que veux tu effacer, le contenu de ta feuille2 ou la coche de ta CheckBox.

    Si comme je le comprends l'optionbouton , ce dernier doit être en corrélation avec une cellule,
    Lorsque tu fais un double clic sur une CheckBox de ton UserForm dans le bisual basic editor fenêtre des propriétés contrôlSource tu doit faire référence à une cellule exemple A1
    Lorsque tu cocheras la CheckBox correspondante VRAI va s’inscrire en A1
    A partir de la c’est facile
    Soit à la fermeture

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Range("A1") = False
    End Sub

    Ou à l’ouverture

    Private Sub Workbook_Open()
    Range("A1") = False
    End Sub

    A+
    0
  8. Graphick Messages postés 118 Statut Membre 9
     
    Ok je comprend bien mais si mon bouton option fait reference à une 30 cellule plus des dessin fait avec des trait??

    Peux pas tout simplement dire ferme et ne garde rien de ce que je viens de faire ???

    Mais attention je veux garder ma mise en page ( Trame ) sur ma feuilles.

    En faite cest exactement le code que nous avons vu plutot que je veux que tout sefface quand je ferme

    CheckBox1 = True
    Sheets("Feuil2").Select

    Range("A4,A101,A198,A292").Value = "6X8"
    Range("X4,X101,X198,X292").Value = "6/12"
    Range("A18").Value = "Corniche Avant et Arrière"
    Range("A20").Value = "2 MCX 8' 9"""
    Range("N18").Value = "Corniche de Côté"
    Range("N20").Value = "4 Mcx 48"""
    Range("G30").Value = "1""3/4"
    Range("I35").Value = "3"""
    Range("F40").Value = "3""1/4"
    Range("S31").Value = "3/4"""
    Range("U35").Value = "3"""
    Range("R40").Value = "2""1/4"
    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
    Selection.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
    0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Sur ta feuille 2 as tu d’autre données à conserver, sinon il serait très facile de supprimer la feuille, de la recréer en la renommant Feuil2.
    Ce qui pose problème est l’effacement des lignes qui change de référence à chaque fois

    A+
    0
    1. Graphick Messages postés 118 Statut Membre 9
       
      bon je vais voir ce qui est le mieux

      Jaimerais avoir ton avis quelle taile maximal mon classeur excel doit faire pour etre performant

      si je te dit 4 mo crois tu que cest trop lourd
      0
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    La taille de ton classeur est fonction de ton système et surtout de ta RAM (mémoire vive)

    Il serait bien de traiter chaque problème jusqu'au bout en ce qui concerne l'effacement de ta feuille2 à la fermeture. Si tu n'as pas d'autre données le plus simple serait de supprimer cette feuille sans confirmation et recréer une nouvelle feuille nommée Feuil2, le code est très simple une dizaine de mot tout au plus

    A+
    0
  11. Graphick Messages postés 118 Statut Membre 9
     
    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
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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+
    0
  13. Graphick Messages postés 118 Statut Membre 9
     
    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
    0
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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+
      0
      1. Graphick Messages postés 118 Statut Membre 9 > Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Salut 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 ......
        0
  14. Graphick Messages postés 118 Statut Membre 9
     
    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
    0
  15. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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+
    0
  16. Graphick Messages postés 118 Statut Membre 9
     
    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
    0
  17. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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+
    0
  18. Graphick Messages postés 118 Statut Membre 9
     
    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
    0
  19. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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+
    0
  20. Graphick Messages postés 118 Statut Membre 9
     
    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
    0
  21. Graphick Messages postés 118 Statut Membre 9
     
    hahaha j'ai trouvé mon problème j'avais masqué les feuilles

    donc quand on masque les feuille impossible d'imprimé ????
    0
  • 1
  • 2