Important!! Macro pour extraire des données d'une BD

cleopatre

XLDnaute Nouveau
Bonjour à tous!!
Merci d'avance à ceux qui se pencheront sur la résolution de mon problème.
Voilà mon soucis: J'ai une base donnée avec dans la première colonne: le nom du marché, la seconde: le nom de l'ouvrage puis Type; date et enfin la valeur.
Sachant que pour un seul marché on peut avoir plusieurs ouvrage et pour chaque date on a une valeur par type par ouvrage et par marché
J'ai besoin de créer une macro qui me permet en sélectionnant le nom du marché; j'aurai la liste des ouvrages correspondants à ce marché et en sélectionnant l'ouvrage puis la date j'arrive à extraire mes valeurs par date et par type (Voir exemple ci joint page "consultation")
C'est semblable à la fonction d'un filtre. Je précise que je ne cherche pas à résoudre ce problème à l'aide du tableau croisé dynamique car j'aimerai plus tard effectuer des modifications dans ces données que je peux l'introduire dans ma base de donnée
 

Pièces jointes

  • exemple.xlsm
    13 KB · Affichages: 105
  • exemple.xlsm
    13 KB · Affichages: 118
  • exemple.xlsm
    13 KB · Affichages: 122

sim

XLDnaute Occasionnel
Re : Important!! Macro pour extraire des données d'une BD

Bonjour,

a la lecture de ton probleme, je pense l'utilisation des TCD est la solution. Je comprend que tu veuilles faire des modification dans ta base de donnee et tu as peur que cela ne soit pas repercuter dans tes TCD: si ta crainte est bien celle la, je te suggere de definir ta source avec une formule DECALER (OFFSET en anglais). Pour cela Inserer/Nom/Definir tu donne un nom a ta source que tu definit par

=OFFSET(INDIRECT("Nom de la feuille!$A$1"),0,0,MAX(COUNTA(Nom de la feuille!$A:$A),2),9)

le ,9 a la fin est le nombre de colonne de ton tableau

pour traduire la fonction en francais

Liste des FONCTIONS d' EXCEL 2003 (exemples, date, function, anglais, franais)

fais attention a ton seprateur il se peut que tu utilise le ";" dans ce cas change toutes les "," de la formule

apres il te faut mettre en critere de page de ton TCD le marche.

Ensuite , je sais pas si tu peux le faire avec une liste deroulante, mais je sais que ca fonctionne avec un USERFORM,

sur ta feuille ou tu presente tes infos tu fait lie une cellule avec le choix de marche (le marche est donc affiche dans une cellule)
apres dans ta macro tu cree une constante "marche" dont la valeur est celle de la cellule liee.
Ensuite dans ta macro qui fait evoluer ton TCD tu dit que le critere de page de ton TCD est la constante "marche" que tu veins de creer.

Voila, cette solution fonctionne tres bien pour le type de tache aue tu veux realiser, dls j'ai mes propres soucy de macro a regler donc je ne peut pas me pencher d'avantage sur ton petit soucy, en tout cas je te conseille d'essayer, en esperant t'avoir un peu aider!! :)

Bonne fin de journee :)

Sim
 

cleopatre

XLDnaute Nouveau
Re : Important!! Macro pour extraire des données d'une BD

Bonjour Sim,
Je te remercie pour ta réponse. Mais j'avoue que je pas tout a fait compris ( je comprends pas c'est que tu veux dire par "le choix de marche")
Je réussi à faire des petites modifs dans mon fichier excel en utilisant une macro et une liste déroulante ( voir pièce jointe onglet accueil et affichage). En gros Il s'agit de sélectionner le nom du marché à l'aide de la liste déroulante puis appyuer sur voir et toutes les lignes de ma BD qui contiennent le meme nom du marché seront affiché en onglet affichage.
Est-il possible d'affiner encore ma rehcerche en sélectionnant encore le nom d'ouvrage ou la date.
merci d'avance
 

Pièces jointes

  • exemple V1.xlsm
    24.4 KB · Affichages: 117
  • exemple V1.xlsm
    24.4 KB · Affichages: 111
  • exemple V1.xlsm
    24.4 KB · Affichages: 103

Bebere

XLDnaute Barbatruc
Re : Important!! Macro pour extraire des données d'une BD

Bonjour Cléopatre,Sim
emploi du filtre élaboré
dans affichage
critère en E1:E2
une liste de validation en E2
ordre ligne d'entêtes indifférentes(excepté syntaxe)
pour voir le code clic droit onglet, choisir visualiser code
à bientôt
 

Pièces jointes

  • exempleV1.xls
    57 KB · Affichages: 94
  • exempleV1.xls
    57 KB · Affichages: 107
  • exempleV1.xls
    57 KB · Affichages: 104

cleopatre

XLDnaute Nouveau
Re : Important!! Macro pour extraire des données d'une BD

Bonjour Forum
Bonjour Bebere et merci pour ta réponse
Le code me va bien mais si je veux encore filtrer au niveau de ma deuxième colonne de ma BD (Ouvrage) ou meme la troisième (Type), comment je fais?
J'ai essayé ce code ci dessous mais ça marche pas!! ( En F2 j'ai ajouté une liste de validation sur l'ouvrage et je veux aprés choisir mon marché puis mon ouvrage il me sort que les lignes correspondantes)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$2" And Target.Count = 1 Then
If Target.Address = "$F$2" And Target.Count = 1 Then

Sheets("BD").Range("A1:F10000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("E1:E2")
Sheets("BD").Range("A1:F10000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("F1:F2"), CopyToRange:=Range("A3:E3")
End If
End If
End Sub
 

cleopatre

XLDnaute Nouveau
Re : Important!! Macro pour extraire des données d'une BD

Bonjour Forum; Bonjour Bebere et merci pour le fichier dernier fichié envoyé. C'est exactement ce qu'il me faut meme si je n'ai pas trop compris comment t'as fais :)
Je reviens vers vous pour une autre question: Est-t-il possible d'afficher les lignes de ma base de donnée correspondantes à deux ou des critères de recherches. Par exemple je cherche :
Marché= Marché3; Ouvrage=ouvrage1 et tous les types
Et
Marché=Marché1; Ouvrage=Ouvrage5; Type=Prévisionnel.
Question supplémentaire: Si ma base de donnée est sous forme d'un tableau. Pourquoi le code VB ci dissous ne fonctionne plus
BD.Range("$A$1:$D$100").AutoFilter
Merci d'avance
Cléo
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz