IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de compréhension de code


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Problème de compréhension de code
    Bonjour à tous,

    Actuellement en stage, je me suis inspirée d'un projet existant pour gérer le planning des congés.
    Le code me parait difficile à comprendre, c'est pourquoi je viens solliciter votre aide.
    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub auto_open() 'Ouverture automatique
       On Error Resume Next
       Application.CommandBars("BarreColoriage").Delete
       CommandBars.Add ("BarreColoriage")
       CommandBars("BarreColoriage").Visible = True
       For i = 1 To Application.CountA([MesCouleurs]) + 1
          Set bouton = CommandBars("BarreColoriage").Controls.Add(Type:=msoControlButton)
          bouton.Style = msoButtonCaption
          bouton.Tag = Range("MotifsCongés")(i)
          bouton.OnAction = "'Coloriage """ & i & """'"
          bouton.Caption = Range("MesCouleurs")(i)
       Next i
    End Sub
    Sub Coloriage(p)
       Application.Calculation = xlCalculationManual
       Application.ScreenUpdating = False
       For Each c In Selection
             c.Value = Range("MesCouleurs")(p).Value
             ' C.Interior.ColorIndex = Range("MesCouleurs")(p).Interior.ColorIndex
             Range("MesCouleurs")(p).Copy c
             If Range("MotifsCongés")(p) <> "" Then
                 If c.Comment Is Nothing Then c.AddComment ' Création des  commentaires
                 c.Comment.Shape.OLEFormat.Object.Font.Name = "Tverdana" 'Définis la police
                 c.Comment.Shape.OLEFormat.Object.Font.Size = 7 'Défini la taille de la police
                 c.Comment.Shape.OLEFormat.Object.Font.FontStyle = "Normal" 'Défini le style de la police
                 temp = Range("MotifsCongés")(p)
                 c.Comment.Text Text:=temp
                 c.Comment.Shape.TextFrame.AutoSize = True
                 c.Comment.Visible = False
             Else
                 c.ClearComments
             End If
        Next c
        Application.Calculation = xlCalculationAutomatic
    End Sub
    Sub auto_close()
        On Error Resume Next
        Application.CommandBars("BarreColoriage").Delete
    End Sub
    Merci d'avance à ceux qui auront pris le temps de m'aider.

    Au plaisir de vous lire

    Aphroditeuh

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Ca irait plus vite si tu nous disais ce que tu ne comprend pas dans le code. Car tout commenter serai un peu long

    Si tu compte répondre tout je ne peux que te conseiller de commencer par lire les différent tutoriel du site et faire des "exercice" avant de te lancer dans le code.
    Si tu bloque juste sur quelque commande commence par regarder l'aide a leur sujet
    (tu sélectionne le mot clef ou positionne ton curseur au milieu et apuie sur la touche F1)
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci Krovax d'avoir pris le temps de me répondre.
    Je vais essayer avec F1 et si j'ai encore des questions, je repasserai
    Bonne journée

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Vite fait quelques commentaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub auto_open() 'Ouverture automatique
       On Error Resume Next 'passer a l'instruction suivante si erreur
    ' ""'' Debut ajout de la barre d'outil "barrecoloriage """
       Application.CommandBars("BarreColoriage").Delete '=> Suppression si la barre existe déja
     
       CommandBars.Add ("BarreColoriage") ' => Ajout de la barre
       CommandBars("BarreColoriage").Visible = True ' rendre la barre visible
       For i = 1 To Application.CountA([MesCouleurs]) + 1 ' ajout de boutons
          Set bouton = CommandBars("BarreColoriage").Controls.Add(Type:=msoControlButton)
          bouton.Style = msoButtonCaption
          bouton.Tag = Range("MotifsCongés")(i)
          bouton.OnAction = "'Coloriage """ & i & """'" 'chaque bouton est associé à une macro ici appel de coloriage avec i en parametre
          bouton.Caption = Range("MesCouleurs")(i) 'titre du bouton
       Next i
    End Sub
    Sub Coloriage(p) 'macro appelée au clique du bouton 
       Application.Calculation = xlCalculationManual 'arret du calcul automatique
       Application.ScreenUpdating = False ' arret raffraichissement ecran
       For Each c In Selection 'parcours les cellules selectionnées
             c.Value = Range("MesCouleurs")(p).Value 'definni la couleur de la cellule
             ' C.Interior.ColorIndex = Range("MesCouleurs")(p).Interior.ColorIndex
             Range("MesCouleurs")(p).Copy c 'recopie de la celulle indice p de la plage nommée "MesCouleurs" vers la cellule c de la selection
             If Range("MotifsCongés")(p) <> "" Then 'si la cellule n'est pas vide
                 If c.Comment Is Nothing Then c.AddComment ' Création des  commentaires
                 c.Comment.Shape.OLEFormat.Object.Font.Name = "Tverdana" 'Définis la police
                 c.Comment.Shape.OLEFormat.Object.Font.Size = 7 'Défini la taille de la police
                 c.Comment.Shape.OLEFormat.Object.Font.FontStyle = "Normal" 'Défini le style de la police
                 temp = Range("MotifsCongés")(p)
                 c.Comment.Text Text:=temp
                 c.Comment.Shape.TextFrame.AutoSize = True
                 c.Comment.Visible = False
             Else
                 c.ClearComments
             End If
        Next c
        Application.Calculation = xlCalculationAutomatic 'retour au calcul automatique
    End Sub
    Sub auto_close() ' se déclenche automatiquement a la fermeture
        On Error Resume Next
        Application.CommandBars("BarreColoriage").Delete 'suppression de la barre d'outil en fermeture du document
    End Sub

    Edit : ce code fonctionne avec plusieurs plages nommées.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merciiiiiiiiiiiiiiiii énormément aalex_38, tu m'enlève une épine du pied
    C'était même plus une épine, c'était presque un javelot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de compréhension de code
    Par bilineata dans le forum Images
    Réponses: 0
    Dernier message: 23/12/2013, 11h34
  2. [XL-2010] Problème de compréhension de code VBA pour application
    Par twenty29 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/07/2013, 07h56
  3. Problème de compréhension de code
    Par jaki199 dans le forum Général Java
    Réponses: 5
    Dernier message: 14/05/2011, 22h26
  4. problème de compréhension de code
    Par condor_01 dans le forum C
    Réponses: 5
    Dernier message: 26/09/2007, 12h17
  5. Petit problème de compréhension d'une ligne de code
    Par totoc1001 dans le forum Images
    Réponses: 3
    Dernier message: 12/03/2007, 21h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo