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 :

Sauvegarder 2 colonnes dans un array + suppression des doublons [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Sauvegarder 2 colonnes dans un array + suppression des doublons
    Bonjour à tous !

    Je vous expose mon problème, sur lequel je suis depuis plusieurs jours au boulot, et qui me rend dingue !

    La situation :
    Je souhaite sauvegarder le contenu de 2 colonnes dans un array de 5 colonnes
    Vous comprendrez bien mieux en voyant l'exemple ci-après.

    J'ai deux méthodes :
    - StockerInfos (qui stocke les 2 colonnes dans mon array, donc il y a des doublons)
    - SupprimerDoublons (qui supprime les lignes dont la 1ère colonne de l'array possède des doublons)

    Mon souhait :
    Je souhaite supprimer les lignes dont la 1ère colonne de l'array possède des doublons, tout en conservant la valeur de la 2ème colonne de cette ligne. (cf. exemple)

    Exemple :
    TABLEAU EXCEL
    Je n'arrive pas à ajouter le AC-051 dans mon array comme je le voudrais sur l'exemple
    1000003 AC-026
    1000003 AC-051

    ARRAY :
    1000003 AC-026 AC-051


    Alors qu'actuellement je n'ai que ça :
    TABLEAU EXCEL
    1000003 AC-026
    1000003 AC-051

    ARRAY :
    1000003 AC-026

    S'il vous plait

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour, bonjour !

    Gros problème de logique !

    Citation Envoyé par kev59600 Voir le message
    Je souhaite sauvegarder le contenu de 2 colonnes (A et B) dans un array (de 2 colonnes aussi : a et b).

    ARRAY :
    1000003 AC-026 AC-051
    L'array résultat a plus de 2 colonnes ‼ Donc en clair, de quoi s'agit-il donc ?
    Car personne n'arrivera à faire tenir 3 colonnes dans 2 !

    ______________________________________________________________________________________________________
    Je suis Paris, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 52
    Points
    52
    Par défaut
    Peut-être ce sont les indices de ton array qu'on peut appeler tableau... et aussi de l'option base 0 ou option base 1
    Avec 0, le tableau de 2 dimensions se déclare avec T(1,1) soit 2 lignes et 2 colonnes en comptant à partir de 0 et en base 1 T(2,2) en comptant à partir de 1.

    Je serais étonné que ça soit la cause de l'erreur sinon il y aura overflow ou outbound error je ne sais plus quelle est le type de l'erreur correspondante

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    bon tout d'abords je te suggere de te renseigner sur ce que qu'est un array ou un tableau car c'est important dans ton cas

    qui en fait est tres simple

    tu a une colonne a et une colonne b sur X ligne
    et tu veux que les données de la colonne b correspondant au toutes les donnée identiques de la colonne A sur la meme lignes

    on est donc la en face d'un soucis qui n'en ai pas un en fait

    donc ppour faire court

    il te faut
    un tableau(de base) variable)
    un tableau de sortie
    un dictionaire

    deja cela devrait te metre la puce a l'oreille

    je te laisse faire tes recherches et reviendrais le cas echeant
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonsoir,


    Exemple avec dictionnaire au lieu de Array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub essai()
       Set Rng = Range("A2:A" & [A65000].End(xlUp).Row)
       Set d = CreateObject("Scripting.Dictionary")
       For Each c In Rng
          If d.exists(c.Value) Then d(c.Value) = d(c.Value) & "," & c.Offset(, 1).Value Else d(c.Value) = c.Offset(, 1).Value
       Next
       [E2].Resize(d.Count) = Application.Transpose(d.keys)
       [f2].Resize(d.Count) = Application.Transpose(d.items)
     End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Bonjour, bonjour !

    Gros problème de logique !

    L'array résultat a plus de 2 colonnes ‼ Donc en clair, de quoi s'agit-il donc ?
    Car personne n'arrivera à faire tenir 3 colonnes dans 2 !

    ______________________________________________________________________________________________________
    Je suis Paris, …
    Au temps pour moi, grosse coquille dans mon explication !
    J'ai prévu large avec 5 colonnes dans mon array.

    Merci à tous pour vos réponses, pour faciliter mes manips j'ai mis l'OPTION BASE à 1 (je ne l'avais pas dit sur mon premier post).

    Merci à toi Boisgontier, ta méthode fonctionne parfaitement, mais je n'ai pas compris le fonctionnement. LOL
    Je désire stocker les valeurs dans un array car je vais devoir effectuer une comparaison avec d'autres valeurs ensuite, or ce n'est pas possible dans ton exemple ?

  7. #7
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Cf PJ

    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
     
    Sub essai3()
      Set d1 = CreateObject("Scripting.Dictionary")
      a = Range("A2:B" & [a65000].End(xlUp).Row)
      j = 0
      For i = LBound(a) To UBound(a)
        If Not d1.exists(a(i, 1)) Then j = j + 1: d1(a(i, 1)) = j
      Next i
      Dim Tbl(): ReDim Tbl(1 To d1.Count, 1 To 5)
      Set d2 = CreateObject("Scripting.Dictionary")
      For i = LBound(a) To UBound(a)
          d2(a(i, 1)) = d2(a(i, 1)) + 1
          Tbl(d1(a(i, 1)), 1) = a(i, 1)
          Tbl(d1(a(i, 1)), d2(a(i, 1)) + 1) = a(i, 2)
       Next
       [E2].Resize(d1.Count, 5) = Tbl
     End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ouah, je n'en demandais pas tant. Merci beaucoup Boisgontier !
    J'ai honte d'être aussi mauvais en algo ... je n'ai pas quitté le domaine informatique pour rien

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

Discussions similaires

  1. Suppression des doublons dans une variable de type tableau
    Par damsmut dans le forum Général VBA
    Réponses: 2
    Dernier message: 23/07/2019, 10h36
  2. [XL-2003] suppression des doublons dans une Combobox
    Par karim19 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2009, 16h42
  3. [Tableaux] suppression des doublons dans un tableau
    Par hammag dans le forum Langage
    Réponses: 3
    Dernier message: 17/06/2009, 19h13
  4. Suppression des doublons par une boucle dans une macro
    Par axamen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2009, 09h37
  5. problème avec la suppression des doublons dans arraylsit
    Par ulysse031 dans le forum Langage
    Réponses: 13
    Dernier message: 04/03/2007, 12h52

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