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 :

Transposer un dictionnaire vers une plage Excel [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Par défaut Transposer un dictionnaire vers une plage Excel
    Bonjour
    Voici ma plage suivante

    Nom : Plage BD.png
Affichages : 169
Taille : 21,8 Ko

    je souhaite obtenir une autre plage sans doublons par rapport a la fusion col1 & col2 & col3 & col4 & col6 la colonne 5 ne seras pas inclus.

    voici résultat Souhaité

    Nom : Resultat BD.png
Affichages : 146
Taille : 8,9 Ko

    J'ai utiliser le code Suivant mais j'ai coincé dans la transposition du dictionnaire vers Excel ou bien comment convertir un dictionnaire dans une plage

    Nom : Dic Vers Plage.png
Affichages : 151
Taille : 7,4 Ko

    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
    Sub SpLignesIdentiques()
    Application.ScreenUpdating = False
    Set Sh = Sheets("BD")
    a = Sh.Range("A2:F21").Value
    Set mondico = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(a)
        temp = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4) & "|" & a(i, 6)
        mondico(temp) = mondico(temp) + 1
    Next i
     
    'Transposer mondico vers excel
     
     
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Renommez d'abord la "Feuil2" en "Restit", puis essayez ceci

    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
    Sub SpLignesIdentiques()
        'Déclaration des variables
        Dim Sh_1 As Worksheet, Sh_2 As Worksheet
        Dim DerLig_Sh1 As Long, DerLig_Sh2 As Long, i As Long
        Dim a As Variant
        Dim MonDico As Object
     
        Application.ScreenUpdating = False
        Set Sh_1 = Sheets("BD")
        Set Sh_2 = Sheets("Restit")
        Sh_2.Cells.ClearContents 'effacement des résultats précédents
     
        'récupération des données
        DerLig_Sh1 = Sh_1.Range("A2").CurrentRegion.Rows.Count + 1
        a = Sh_1.Range("A2:F" & DerLig_Sh1).Value
        Set MonDico = CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(a) - 1
            temp = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4) & "|" & a(i, 6)
            MonDico(temp) = MonDico(temp) + 1
        Next i
     
        'Transposition dans MonDico
        If MonDico.Count > 0 Then Sh_2.Range("A1").Resize(MonDico.Count, 1) = Application.Transpose(MonDico.keys)
     
        'conversion en colonnes
        Sh_2.Select
        DerLig_f2 = Range("A1").CurrentRegion.Rows.Count
        Range("A1:A" & DerLig_f2).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
            1)), TrailingMinusNumbers:=True
     
        'Libération de la mémoire
        Set Sh_1 = Nothing
        Set Sh_2 = Nothing
    End Sub
    Pièce jointe 610567


    Cdlt

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 251
    Par défaut
    hello,
    Citation Envoyé par iliesss Voir le message
    je souhaite obtenir une autre plage sans doublons par rapport a la fusion col1 & col2 & col3 & col4 & col6 la colonne 5 ne seras pas inclus.
    et pourquoi pas masquer la colonne 5 provisoirement, faire un filtre avancé pour masquer les doublons et faire la copie que des cellules visibles comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub CopieVisible()
        Set Sh = Sheets("BD")
        Sh.Range("E:E").EntireColumn.Hidden = True
        Sh.Range("A2:F21").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
        'Copie de la plage des cellules visibles dans la feuille FEUIL2 à partir de la cellule A1
        Sh.Range("A2:F21").SpecialCells(xlCellTypeVisible).Copy Sheets("FEUIL2").Range("A1")
        Sh.Range("E:E").EntireColumn.Hidden = False
        Sh.Range("A2:F21").AdvancedFilter Action:=xlFilterInPlace, Unique:=False
    End Sub
    Ami calmant, J.P

  4. #4
    Membre éclairé
    Homme Profil pro
    comptable principal
    Inscrit en
    Octobre 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : comptable principal
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 434
    Par défaut
    Bonjour
    Merci beaucoup Mr ARTURO et Mr Jurassic pour vs réponses

    Grace a vous j'ai appris des nouvelles techniques

    merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2020, 11h50
  2. [XL-2007] Copier une plage excel à partir d'un classeur fermé vers le classeur actif
    Par FrancisZheng dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 17/11/2015, 16h51
  3. [XL-2013] Extraction d'une plage Excel vers Word
    Par matinho dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/12/2014, 18h38
  4. [AC-2010] Exporter une requête paramétrée vers une plage Excel
    Par fabian_ dans le forum VBA Access
    Réponses: 7
    Dernier message: 16/03/2014, 00h19
  5. Envoyer une plage Excel vers une base Access
    Par alain59320 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2009, 19h21

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