Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Traduction code vba

  • Initiateur de la discussion Initiateur de la discussion sircroco
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

sircroco

Guest
Bonjour,

Excusez moi de vous déranger, je suis en pleine autoformation de VBA..., je souhaiterai avoir une traduction simple de ce qu'il se passe sur les lignes de codes des deux modules dans ce fichier... j'apprend à faire du VBA, je vous remercie !!
 

Pièces jointes

Bonjour Sircroco, bonjour le forum,

Module 4, le code va :
- balayer une première fois toutes les lignes du premier onglet (à partir de la seconde)
- à l'aide d'un objet dictionnaire il ne va garder que les paires Mag/Réf des années différentes de 2018 sans doublon
- balayer une seconde fois toutes les lignes du premier onglet (à partir de la seconde)
- si une paire Mag/Réf existante dans le dictionnaire dico est aussi présente en 2018, elle est supprimé du dictionnaire dico
- au final, ne sont renvoyées dans l'onglet Sheet2 uniquement les données Mag/Réf unique autres qu'en 2018 et n'existant pas non plus en 2018.

Le code commenté :

VB:
Sub Bouton1_Cliquer()

'déclaration des variables : a de type variant (par défaut), i de type entier long, txt de type texte, dico comme objet
Dim a, i As Long, txt As String, dico As Object
'définit le dictionnaire dici
Set dico = CreateObject("Scripting.Dictionary")
dico.CompareMode = 1
'définit le tableau a (l'ensemble des cellules non vides adjacentes à A1 du premier onglet du classeur
a = Sheets(1).Range("a1").CurrentRegion.Value
'boucle sur toutes les lignes i du tableau a (en partant de la seconde)
For i = 2 To UBound(a, 1)
    'condition : si la donnée ligne i, colonne 3 de a est différente de 2018
    If a(i, 3) <> 2018 Then
        'définit la variable txt : la paire Mag/Réf
        txt = Join$(Array(a(i, 1), a(i, 2)), Chr(2))
        'alimente le dictionnaire dico avec la variable txt (sans doublon)
        dico(txt) = VBA.Array(a(i, 1), a(i, 2))
    'fin de la condition
    End If
'prochaine ligne de la boucle
Next
'boucle sur toutes les lignes i du tableau a (en partant de la seconde)
For i = 2 To UBound(a, 1)
    'condition 1 : si la donnée ligne i, colonne 3 de a est égale à 2018
    If a(i, 3) = 2018 Then
        'définit la variable txt : la paire Mag/Réf
        txt = Join$(Array(a(i, 1), a(i, 2)), Chr(2))
        'condition 2 : si la paire existe em 2018
        If dico.exists(txt) Then
            'suprime cette paire
            dico.Remove txt
        'fin de la condition 2
        End If
    'fin de la condition 2
    End If
'prochaine ligne de la boucle
Next
'prend en compte l'ensemble des l'ensemble des cellules non vides adjacentes à A1 du second onglet du classeur en le redimensionnant aux deux premières colonnes uniquement
With Sheets(2).Range("a1").Resize(, 2)
    'efface le contenu d'éventuelles anciennes données
    .CurrentRegion.Clear
    'si le dictionnaire dico (la liste des txt sans doublons) n'est pas vide
    If dico.Count > 0 Then
        'écrit "Magasin" en A1 et Article en B1
        .Value = Array("Magasin", "Article")
        'reprend en compte l'ensemble au dessus en se décalant d'une ligne vers le bas en redimensionnant d'autant de ligne que dico a d'éléments
        With .Offset(1).Resize(dico.Count)
            'renvoie dans ces cellules le tableau dico transposé
            .Value = Application.Transpose(Application.Transpose(dico.items))
        'fin de la seconde prise en compte
        End With
    'fin de la condition
    End If
'fin de la première prise en compte
End With
'vide l'objet dico
Set dico = Nothing
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
32
Affichages
1 K
Réponses
37
Affichages
1 K
Réponses
2
Affichages
133
Réponses
6
Affichages
256
Réponses
2
Affichages
410
Réponses
6
Affichages
280
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…