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 :

Suppresion d'une association clé/valeur d'un objet dictionary [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut Suppresion d'une association clé/valeur d'un objet dictionary
    Bonjour,

    Comme l'indique le sujet souhaiterai complètement supprimer une entrée d'un dictionnaire.
    Exemple :
    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 TT()
      Dim d As New Dictionary, Key As Variant
     
      d.Add 0, 5
      d.Add 1, 10
      d.Add 2, 15
      d.Add 3, 20
      d.Add 4, 25
      d.Add 5, 30
     
      d.Remove (3)
     
      For i = 0 To d.Count
       Debug.Print "clé " & i & " valeur [" & d(i) & "]"
      Next
     
    End Sub
    Affiche :
    clé 0 valeur [5]
    clé 1 valeur [10]
    clé 2 valeur [15]
    clé 3 valeur []
    clé 4 valeur [25]
    clé 5 valeur [30]
    Or je souhaiterai obtenir :
    clé 0 valeur [5]
    clé 1 valeur [10]
    clé 2 valeur [15]
    clé 3 valeur [25]
    clé 4 valeur [30]
    à la façon de array_splice() en php qui permet de supprimer la donnée, la clé et de réordonner les clés.


    J'ai 2 boucles for imbriquées.
    La deuxième permet de parcourir le dictionnaire dont je souhaite supprimer les éléments déjà traités (pour éviter de les traiter une seconde fois)

    IsEmpty(d(3)) renvoi vrai, mais je préfèrerai faire une suppression de la clé et de la valeur.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    il me semble qu'il y a la fonction remove pour le dico non?
    un petit tour par la aussi
    http://boisgontierjacques.free.fr/pa...ctionnaire.htm
    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

  3. #3
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut
    Bonjour Patrick,

    Oui la fonction remove existe, mais elle ne fait que supprimer la valeur, le dictionnaire garde la clé, or je voudrais supprimer la clé ET la valeur :-(

  4. #4
    Expert éminent
    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
    Par défaut
    Bonjour,

    non pas du tout ‼ Remove supprime bien la clef, rien qu'en ouvrant l'aide VBA !   Et sans compter MSDN …

    C'est juste une mauvaise utilisation du dictionnaire, voir dans l'aide Keys

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …


  5. #5
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut
    Alors dans ce cas, pourquoi le code que j'ai fourni en exemple ne fonctionne pas ?

  6. #6
    Expert éminent
    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
    Par défaut
    Salut Jacques !

    Citation Envoyé par Bragu Demon Voir le message
    Alors dans ce cas, pourquoi le code que j'ai fourni en exemple ne fonctionne pas ?
    Mauvais codage !

    Juste en ouvrant l'aide VBA de l'objet Dictionary puis consulter l'aide de Keys manquant dans le code présenté !
    Sans compter les exemples dans les discussions de ce forum …

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    J'ajoute à ce que rappelle Marc-L, que je salue, que la méthode Remove reçoit justement la clé (Key) à supprimer

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Dic("toto")=10
    Va créer une clé toto implicitement!
    Debug.print Dic("chèvre") va créer une instance chèvre implicitement, il y a de quoi le devenir!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    k=Dic.keys
    For i =0 to Dic.count -1
    Debug.print Dic(k(i)),k(i)
    Next
    Dernière modification par Invité ; 16/11/2017 à 18h37.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/03/2010, 10h57
  2. Réponses: 1
    Dernier message: 31/03/2009, 10h15
  3. [MySQL] Prendre la valeur d'une table et l'associer à la valeur d'une autre
    Par gandolfi dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/02/2008, 08h04
  4. associer une liste de valeurs à un champ d'une table
    Par bastaji dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/11/2007, 10h33
  5. [MFC] comment associer 2 valeurs à une ComboBox
    Par drinkmilk dans le forum MFC
    Réponses: 2
    Dernier message: 13/04/2005, 11h41

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