Manipuler une base de donnée

Résolu/Fermé
Stem01 Messages postés 6 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 29 janvier 2015 - 27 juil. 2014 à 12:12
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 3 août 2014 à 14:15
Bonjour,
En phase d'apprentissage en macro excel, je vous explique mon problème:
Sur ma feuille de base de donnée "BD" J'ai une colonne A comprenant des prénoms de personnes et leur lieu de résidence en colonne B:

Colonnes A_B:
Pierre_Paris
Jean__Lyon
Alain__Lyon
André_Marseille
Roger_Paris
......

Sur ma feuille "RES", je souhaiterai lister les habitants par villes:

Colonnes A_B_C:
Paris____Pierre_Roger
Lyon____Jean__Alain
Marseille_André
......

Je voudrai que ma liste se mette à jour automatiquement au fur et à mesure de nouvelles entrées de prénoms ou de villes (listes non exhaustives).
Je suis confus sur la méthode à suivre: faire un tableau, créer une collection...?
Je vous remercie de votre aide.
Stem01

4 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 27/07/2014 à 16:25
Bonjour

un début de réponse?
https://www.cjoint.com/?3GBqwFXLCbT

Cdlmnt
1
Stem01 Messages postés 6 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 29 janvier 2015
28 juil. 2014 à 13:13
Bonjour ccm81,
C'est magnifique, merci pour le travail!!
Quelques questions de néophytes si vous avez le temps d'y répondre:
- quel est l'intérêt d'utiliser l'"option explicit" pour déclarer des constantes?
- à quoi sert le "sep $"?
Cdlt
Stem01
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 28/07/2014 à 14:48
1. Option Explicit est une directive qui oblige à déclarer toutes les variables et constantes (bonne habitude à prendre)
2. Const sep = "$" sep est le séparateur utilisé pour séparer les prénoms lors de la construction du dictionnaire, je l'ai mis en Constante au cas où ce caractère apparaitrait dans les valeurs à traiter, dans ce cas, il vaut mieux modifier sa valeur en début de code et une seule fois plutôt que d'aller trafiquer dans le code de la procédure Encore une bonne habitude, dans le code des procédures/fonctions, il vaut mieux ne pas mettre de valeurs en dur, mais les remplacer par des appels à des constantes. Si pour une raison quelconque cette valeur est amenée à changer, on n'a pas à toucher au code des procédures

3. Une autre proposition qui te permet d'ajouter un à un les villes/prénoms au fur et à mesure de leur entrée
https://www.cjoint.com/?3GCnRw01570

Cdlmnt
0
Stem01 Messages postés 6 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 29 janvier 2015
30 juil. 2014 à 12:30
Bonjour ccm81,
Merci pour ce nouveau code!
Une question qui m'embarrasse souvent est la gestion des cellules vides.
Comment ignorer des cellules vides qui se trouveraient par inadvertance dans ma base de donnée sans que cela ne crée de vide dans ma feuille de résultat?
En clair il s'agirait d'ignorer la ligne dans laquelle se trouve une cellule vide.
cdlt
Stem01
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 30/07/2014 à 14:54
Essaies ceci

  For liBD = LidebBD To lifinBD
ville = .Cells(liBD, codebBD + 1)
prenom = .Cells(liBD, codebBD)
If prenom <> "" and ville <> "" Then
If dico.exists(ville) Then
dico(ville) = dico(ville) & sep & prenom
Else
dico.Add ville, prenom
End If
End If
Next liBD

Cdlmnt
0
Stem01 Messages postés 6 Date d'inscription dimanche 27 juillet 2014 Statut Membre Dernière intervention 29 janvier 2015
3 août 2014 à 11:14
Bonjour ccm81,
Ca marche très bien, je vais garder cette méthode pour la suppression des cellules vides.
Milles mercis!!
Stem01
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
3 août 2014 à 14:15
De rien,

Si c'est fini, peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

Bon après midi
0