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 :

Explication d'un code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut Explication d'un code
    Bonjour je suis nouveau sur ce forum et je vais déjà vous soumettre une question.
    J'ai créer un tableau de service qui reprend les 12 mois de l'année, j'ai demander à un ami beaucoup plus fort que moi en informatique de me créer une macro pour mettre les samedi et dimanche des 31 jours du mois en couleur jaune clair.
    la macro fonctionne ! mais celui-ci ne veux pas me l'expliquer et cela ménerve beaucoup, car j'aime conprendre les choses!
    voici la macro:

    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
    Sub couleur()
        alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        ActiveSheet.Unprotect                                       
        Dim i As Integer
        For i = 0 To 30
        If i + 12 <= 26 Then
            lettre = Mid(alphabet, i + 12, 1)
            Else
            lettre = "A" & Mid(alphabet, i - 14, 1)
        End If
        Range(lettre & "4").Select
        If Len(RTrim(LTrim(ActiveCell))) > 0 Then
        If Weekday(DateValue(ActiveCell), vbMonday) = 7 Or Weekday(DateValue(ActiveCell), vbMonday) = 6 Or Len(Trim(Range(lettre & "5"))) > 0 Then
            Range(lettre & "4", lettre & "60").Interior.ColorIndex = 19  
            Range(lettre & "4", lettre & "60").Interior.Pattern = xlSolid
        Else
            Range(lettre & "4", lettre & "60").Interior.ColorIndex = 2
            Range(lettre & "4", lettre & "60").Interior.Pattern = xlSolid
        End If
        End If
        Next
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    quelqu'un pourrait-il me l'expliquer dans mon language qui n'est pas aussi développer que le votre?
    je commence en VB, je suis vraiment un débutant en VB avec un grand "D"

    Merci a vous et bonne continuation pour votre site sur lequel je vais passer de nombreuse nuit pour apprendre VB

    Bav

    Phil

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Philhub,


    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Sub couleur()
    'la variable "alphabet" est une variable de type String (texte) comprenant les 26 lettres de l'alphabet
        alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    'La feuille est protégée (sans mot de passe). L'instruction ci-dessous supprime la protection pour pouvoir
    'enregistrer des modifications dans les cellules
        ActiveSheet.Unprotect
    'la variable "i" est de type "Integer" (nombre entier compris entre -32768 et + 32767)
        Dim i As Integer
    'démarrage d'une boucle pour la valeur de "i" = 0 jusque 30 (la variable "i" s'incrémente de 1 à chaque passage)
        For i = 0 To 30
    'si "i" +12 est inférieur ou égal à 26 (on démarre donc à la colonne "L")
        If i + 12 <= 26 Then
     
    'on affecte à la variable "lettre" la lettre dont la position est égale à la valeur de "i" + 12
    'exemple si "i" = 3 on affecte à la variable "lettre" le 15ème caractère de l'alphabet soit "O"
    'Mid pour Middle (mileu) de la variable "alphabet", i+12 : position du caractère à affecter;
    '1 : nombre de caractères à affecter
            lettre = Mid(alphabet, i + 12, 1)
            Else
    'sinon (si "i+12" est > 26 donc si "i" est > 14) on affecte à la variable "lettre" le caractère "A" concaténé avec
    'la valeur du caractère défini par "Mid(alphabet, i - 14, 1)" (même explication que ci-dessus).
    'donc si i = 15 la variable "lettre" contient "AA", si = 16 contient "AB" (n° de colonne)
            lettre = "A" & Mid(alphabet, i - 14, 1)
        End If
    'On sélectionne la cellule correspondant ) la valeur de la colonne définie ci-dessus et dans la ligne N° 4
        Range(lettre & "4").Select
    'la ligne ci-dessous renvoie le nombre de caractères (Len) de la cellule sélectionnée ci-dessus (ActiveCell)
    'après avoir supprimé les éventuels "espaces" avant le contenu (Ltrim) et après le contenu (Rtrim)
    'si la valeur revoyée est 0 l'instruction suivante qui sera exécutée sera "Next" (prochaine valeur de "i")
        If Len(RTrim(LTrim(ActiveCell))) > 0 Then
    'sinon le N° du jour contenu dans la date elle-même contenue dans la cellule active est 6 ou 7 (samedi ou dimanche)
    'on applique la couleur N° 19 (jaune pâle) pour la plage "cellule sélectionnée, ligne 4 jusqu'à la ligne 60) et le motif
    'défini par xlSolid (si vous voulez changer la couleur et le motif, cliquez sur "ColorIndex" puis touche "F1" vous
    'obtiendrez les codes de couleur. Recommencez sur "xlSolid" et vous trouverez les différents motifs.
    'remarque : ce N° de jour peut être défini différement (dimanche = 1 et samedi = 7) donc attention aux paramètres
    'définis dans l'application
        If Weekday(DateValue(ActiveCell), vbMonday) = 7 Or Weekday(DateValue(ActiveCell), vbMonday) = 6 Or Len(Trim(Range(lettre & "5"))) > 0 Then
            Range(lettre & "4", lettre & "60").Interior.ColorIndex = 19
            Range(lettre & "4", lettre & "60").Interior.Pattern = xlSolid
            Else
    'si le N° de jour n'est pas = 7 ou = 6 (voir ci-dessus "ColorIndex" "xlPattern"
           Range(lettre & "4", lettre & "60").Interior.ColorIndex = 2
            Range(lettre & "4", lettre & "60").Interior.Pattern = xlSolid
        End If
        End If
    'retour à la boucle "For i" jusqu'à ce que la valeur "30" soit atteinte.
    'une fois cette valeur atteinte la précédure se termine.
    'remarque : les lignes  "For i = 0 To 30" et  "If i + 12 <= 26 Then" vous permettent de traiter les colonnes "L" jusque
    ' "AP" si vous voulez aller jusque "AZ" il faudra modifier la valeur "to 30" en "to 40"
    'si vous vouliez aller plus loin que "AZ" il faudrait ajouter une variable et un test pour que la concaténation de "A"
    'avec la 2ème lettre devienne "B" & (2ème lettre).
        Next
    'on re-protège la feuille sans mot de passe
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Par défaut
    Merçi pour votre réponse Jacques, elle était rapide, claire et précise.
    Vous m'avez donné les explications souhaités.

    Un gand merçi à vous

    Philippe

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Merci de cliquer sur si tu as eu la réponse souhaitée.

    Starec

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

Discussions similaires

  1. Explication sur du code javascript
    Par griese dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/07/2006, 09h40
  2. explications/commentaires de codes
    Par pascal913 dans le forum Access
    Réponses: 24
    Dernier message: 19/07/2006, 14h01
  3. cherche explication sur du code
    Par abdoulzak dans le forum Langage
    Réponses: 1
    Dernier message: 06/07/2006, 10h23
  4. besoin d'explications sur un code
    Par NAHIAG dans le forum C
    Réponses: 8
    Dernier message: 28/05/2006, 12h37
  5. [javascript] explication d'un code
    Par mzt.insat dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/04/2006, 23h52

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