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 :

Explications détaillées lignes de macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 49
    Par défaut Explications détaillées lignes de macro
    Bonjour à tous

    J'aimerai comprendre l'intégralité d'une macro mais étant débutant j'ai du mal.
    Je recherche une âme charitable pour m'expliquer ligne par ligne avec un maximum de détail la macro ci-dessous.

    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
    Sub Test()
    Dim LastLig As Long
    Dim i As Long
    Dim Dico As Object
    Dim S As String
    Dim Tb
     
     
    Application.ScreenUpdating = False
    With Worksheets("Données")
        LastLig = .Cells(.Rows.Count, "F").End(xlUp).Row
        .Range("H5" & LastLig).Formula = "=COUNTIF($F$5" & LastLig & ",$F5)"
        Tb = .Range("C8:H" & LastLig)
    End With
     
    Set Dico = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Tb, 1)
        If Tb(i, 4) > 1 Then
               S = "B(" & Tb(i, 1) & "*" & Tb(i, 2) & "*" & Tb(i, 3) & ") ."
            If Not Dico.Exists(Tb(i, 4)) Then
                Dico.Add Tb(i, 4), "EIU " & S
            Else
                Dico(Tb(i, 4)) = Replace(Dico(Tb(i, 4)) & S, " .B", "B")
            End If
        End If
    Next i
    Range("H5:H" & LastLig).ClearContents
     
    If Dico.Count > 0 Then
        With Worksheets("Données").Range("I5").Resize(Dico.Count, 2)
            .Value = Application.Transpose(Array(Dico.keys, Dico.items))
            .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlNo
        End With
    End If
    Set Dico = Nothing
    End Sub

    Merci d'avance

    Bonne soirée

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas envie de perdre mon heure de connexion pour te satisfaire. Mais pour t'aider, il y a deux trucs fondamentaux:

    1) Tu exécutes ta procédure au pas-à-pas et tu regardes ce qui se passe dans la feuille. Le pas à pas avec observation des résultats est une des principales techniques de débogage utilisées.

    2) Tu cliques sur un mot-clef et tu appuies sur F1

    Le plus important à savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=COUNTIF($F$5" & LastLig & ",$F5)"
    C'est la fonction de feuille de calcul SOMMESI. Donc le programme doit produire une somme conditionnelle quelconque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Dico = CreateObject("Scripting.Dictionary")
    Un dictionnaire c'est une sorte de tableau à double entrée. La première entrée est une clef et la seconde entrée est une valeur. Il ne peut pas y avoir deux clefs identiques.


    C'est pour que les lignes deviennent des colonnes et que les colonnes deviennent des lignes.

    Pour le reste :

    http://excel.developpez.com/cours/

Discussions similaires

  1. supprimer ligne avec macro textbox
    Par lilou86 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/04/2008, 14h07
  2. suppression de ligne par macro
    Par stefano dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/02/2008, 14h41
  3. Position ligne suite macro?
    Par saveme dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 02h55
  4. Supprimer ligne par macro
    Par a.dequidt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/09/2007, 11h36
  5. explication détaillée de la directive #line
    Par blancdecoeur dans le forum C
    Réponses: 1
    Dernier message: 19/09/2005, 09h38

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