Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction données suivant sélection dans USF

24 réponses
Avatar
Théodore
Bonjour,

Je travaille en ce moment sur un petit programme mais comme je débute sous
VBA j'ai quelques difficultés !!!

En quelques mots :
Dans un USF on trouve :

- ListBoxA = liste de personnes
- ListBoxB = mois de l'année
- ComboBox1 = Années 2008, 2009 et 2010
- CheckBoxS1 = Site 1
- CheckBoxS2 = Site 2
- Bouton1 = Valider
- Bouton2 = Annuler

L'USF s'ouvre grace à un bouton qui se situe dans l'onglet "Synthèse".

Dans un 2ème onglet (BDonnées), se trouve une base de données (Site,
nom_personnes, mois, année, CA_net, nom_produits, Réf_produits, nom_clients,
Réf_clients)

Ma question :
Comment, suivant les différents choix dans mon USF, extraire les données de
la BD pour les copier dans la feuille "Synthèse" ?

Si vous avez une idée...

Merci et bon réveillon !

Théo

10 réponses

1 2 3
Avatar
FFO
Salut à toi

Afin de te répondre correctement il serait à mon avis judicieux de nous
transmettre un exemple ici :

http://www.cijoint.fr/index.php

en supprimant toutes les données confidentielles

Communiques le lien pour le récupérer
Avatar
michdenis
Bonjour,

Ta question manque de précision :
Un petit exemple que tu devras appliquer
selon ton application

Dim DerLig As Long

With Worksheets("Synthèse")
'Trouve la première ligne vide dans la feuille
DerLig = .Range("A65536").end(xlup)(1).row
'Copie de tes données affichées par tes contrôles
'dans les colonnes appropriées de la feuille.
.Range("A" & DerLig) = Userform1.Textbox1.value
.Range("B" & derLig) = Userform1.Combobox.Value
'ainsi de suite
End With



"Théodore" a écrit dans le message de groupe de discussion :
#3Ve#
Bonjour,

Je travaille en ce moment sur un petit programme mais comme je débute sous
VBA j'ai quelques difficultés !!!

En quelques mots :
Dans un USF on trouve :

- ListBoxA = liste de personnes
- ListBoxB = mois de l'année
- ComboBox1 = Années 2008, 2009 et 2010
- CheckBoxS1 = Site 1
- CheckBoxS2 = Site 2
- Bouton1 = Valider
- Bouton2 = Annuler

L'USF s'ouvre grace à un bouton qui se situe dans l'onglet "Synthèse".

Dans un 2ème onglet (BDonnées), se trouve une base de données (Site,
nom_personnes, mois, année, CA_net, nom_produits, Réf_produits, nom_clients,
Réf_clients)

Ma question :
Comment, suivant les différents choix dans mon USF, extraire les données de
la BD pour les copier dans la feuille "Synthèse" ?

Si vous avez une idée...

Merci et bon réveillon !

Théo
Avatar
Théodore
Ci-joint le lien vers mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj200912/cijtqZUuHw.xls


A+
Théo

"Théodore" a écrit dans le message de
news:%233Ve%
Bonjour,

Je travaille en ce moment sur un petit programme mais comme je débute sous
VBA j'ai quelques difficultés !!!

En quelques mots :
Dans un USF on trouve :

- ListBoxA = liste de personnes
- ListBoxB = mois de l'année
- ComboBox1 = Années 2008, 2009 et 2010
- CheckBoxS1 = Site 1
- CheckBoxS2 = Site 2
- Bouton1 = Valider
- Bouton2 = Annuler

L'USF s'ouvre grace à un bouton qui se situe dans l'onglet "Synthèse".

Dans un 2ème onglet (BDonnées), se trouve une base de données (Site,
nom_personnes, mois, année, CA_net, nom_produits, Réf_produits,
nom_clients, Réf_clients)

Ma question :
Comment, suivant les différents choix dans mon USF, extraire les données
de la BD pour les copier dans la feuille "Synthèse" ?

Si vous avez une idée...

Merci et bon réveillon !

Théo


Avatar
Fredo P.
Sans utiliser l'usrf, les seules 4 premières colonnes prises en compte,
cellules(bleues) à validation en lieu et place, un aperçu de ce que l'on
peut obtenir.

-- http://cjoint.com/?mEsJO405HF

Fredo P.


"Théodore" a écrit dans le message de news:

Ci-joint le lien vers mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj200912/cijtqZUuHw.xls


A+
Théo

"Théodore" a écrit dans le message de
news:%233Ve%
Bonjour,

Je travaille en ce moment sur un petit programme mais comme je débute
sous VBA j'ai quelques difficultés !!!

En quelques mots :
Dans un USF on trouve :

- ListBoxA = liste de personnes
- ListBoxB = mois de l'année
- ComboBox1 = Années 2008, 2009 et 2010
- CheckBoxS1 = Site 1
- CheckBoxS2 = Site 2
- Bouton1 = Valider
- Bouton2 = Annuler

L'USF s'ouvre grace à un bouton qui se situe dans l'onglet "Synthèse".

Dans un 2ème onglet (BDonnées), se trouve une base de données (Site,
nom_personnes, mois, année, CA_net, nom_produits, Réf_produits,
nom_clients, Réf_clients)

Ma question :
Comment, suivant les différents choix dans mon USF, extraire les données
de la BD pour les copier dans la feuille "Synthèse" ?

Si vous avez une idée...

Merci et bon réveillon !

Théo





Avatar
Théodore
C'est une option intéressante mais qui ne me convient pas.
Je préfère utiliser un USF.

Merci à toi.

A+
Théo


"Fredo P." a écrit dans le message
de news:
Sans utiliser l'usrf, les seules 4 premières colonnes prises en compte,
cellules(bleues) à validation en lieu et place, un aperçu de ce que l'on
peut obtenir.

-- http://cjoint.com/?mEsJO405HF

Fredo P.


"Théodore" a écrit dans le message de news:

Ci-joint le lien vers mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj200912/cijtqZUuHw.xls


A+
Théo

"Théodore" a écrit dans le message de
news:%233Ve%
Bonjour,

Je travaille en ce moment sur un petit programme mais comme je débute
sous VBA j'ai quelques difficultés !!!

En quelques mots :
Dans un USF on trouve :

- ListBoxA = liste de personnes
- ListBoxB = mois de l'année
- ComboBox1 = Années 2008, 2009 et 2010
- CheckBoxS1 = Site 1
- CheckBoxS2 = Site 2
- Bouton1 = Valider
- Bouton2 = Annuler

L'USF s'ouvre grace à un bouton qui se situe dans l'onglet "Synthèse".

Dans un 2ème onglet (BDonnées), se trouve une base de données (Site,
nom_personnes, mois, année, CA_net, nom_produits, Réf_produits,
nom_clients, Réf_clients)

Ma question :
Comment, suivant les différents choix dans mon USF, extraire les données
de la BD pour les copier dans la feuille "Synthèse" ?

Si vous avez une idée...

Merci et bon réveillon !

Théo









Avatar
FFO
Rebonjour à toi

Sur ce lien ma proposition

Réalises toute les choix dans ton Userform et valide

Vérifies le résultat obtenu dans ton onglet "Synthèse"

Je n'ai pas pu ramener la donnée "produit" ne figurant pas dans l'onglet
"BDonnées"

Si tu dois la rajouter mets à jour dans la ligne de code du bouton
validation du userform :

Sheets("Synthèse").Range("F" & Ligne) = Sheets("BDonnées").Range("B" & i)

la partie : Sheets("BDonnées").Range("B" & i)

et supprimes la côte en début

Fais des essais et dis moi !!!!!

http://www.cijoint.fr/cjlink.php?file=cj200912/cijwQLNKPN.xls
Avatar
Théodore
Bonjour et merci !
Je vais tester et je reviens vers le forum un peu plus tard...

Théo

"FFO" a écrit dans le message de
news:
Rebonjour à toi

Sur ce lien ma proposition

Réalises toute les choix dans ton Userform et valide

Vérifies le résultat obtenu dans ton onglet "Synthèse"

Je n'ai pas pu ramener la donnée "produit" ne figurant pas dans l'onglet
"BDonnées"

Si tu dois la rajouter mets à jour dans la ligne de code du bouton
validation du userform :

Sheets("Synthèse").Range("F" & Ligne) = Sheets("BDonnées").Range("B" & i)

la partie : Sheets("BDonnées").Range("B" & i)

et supprimes la côte en début

Fais des essais et dis moi !!!!!

http://www.cijoint.fr/cjlink.php?file=cj200912/cijwQLNKPN.xls




Avatar
Théodore
FFO,

Peux tu m'expliquer pourquoi
i = 2
et
Do While i < Sheets("BDonnées").Range("P65535").End(xlUp).Row + 1
?


A+
Théo


"FFO" a écrit dans le message de
news:
Rebonjour à toi

Sur ce lien ma proposition

Réalises toute les choix dans ton Userform et valide

Vérifies le résultat obtenu dans ton onglet "Synthèse"

Je n'ai pas pu ramener la donnée "produit" ne figurant pas dans l'onglet
"BDonnées"

Si tu dois la rajouter mets à jour dans la ligne de code du bouton
validation du userform :

Sheets("Synthèse").Range("F" & Ligne) = Sheets("BDonnées").Range("B" & i)

la partie : Sheets("BDonnées").Range("B" & i)

et supprimes la côte en début

Fais des essais et dis moi !!!!!

http://www.cijoint.fr/cjlink.php?file=cj200912/cijwQLNKPN.xls




Avatar
Théodore
J'ai une question concernant le fichier :

Le code VBA ne fonctionne qu'à moitié !
En effet, il copie que la première ligne trouvée et non les suivantes !
Sais-tu pourquoi ?

A+
Théo



"FFO" a écrit dans le message de
news:
Rebonjour à toi

Sur ce lien ma proposition

Réalises toute les choix dans ton Userform et valide

Vérifies le résultat obtenu dans ton onglet "Synthèse"

Je n'ai pas pu ramener la donnée "produit" ne figurant pas dans l'onglet
"BDonnées"

Si tu dois la rajouter mets à jour dans la ligne de code du bouton
validation du userform :

Sheets("Synthèse").Range("F" & Ligne) = Sheets("BDonnées").Range("B" & i)

la partie : Sheets("BDonnées").Range("B" & i)

et supprimes la côte en début

Fais des essais et dis moi !!!!!

http://www.cijoint.fr/cjlink.php?file=cj200912/cijwQLNKPN.xls




Avatar
FFO
Rebonjour à toi

"i = 2
et
Do While i < Sheets("BDonnées").Range("D65535").End(xlUp).Row + 1 "

J'ai réalisé une boucle en m'appuyant sur une variable i qui a pour valeur 2
au départ et qui évolue à chaque tour par la ligne i=i+1 jusqu'à atteindre la
valeur correspondant à la derniere ligne de la cellule colonne D qui est non
vide ce que veux dire la ligne :

Do While i < Sheets("BDonnées").Range("D65535").End(xlUp).Row + 1

Tour à tour donc je me sers de cette variable pour déterminer la ligne que
je traite (de la 2° à la dernière ligne de la cellule colonne D non vide):

If Sheets("BDonnées").Range("D" & i) & UCase(Format(Format(Date, "dd") & "/"
& Sheets("BDonnées").Range("G" & i) & "/" & Format(Date, "yy"), "mmmm")) &
Sheets("BDonnées").Range("H" & i) & Sheets("BDonnées").Range("A" & i) =
Sheets("infos").Range("A" & Me.ListBoxA.ListIndex + 1) &
Sheets("infos").Range("C" & Me.ListBoxM.ListIndex + 1) &
Sheets("infos").Range("E" & Me.ComboBoxAN.ListIndex + 1) & Site Then
Sheets("Synthèse").Range("A" & Ligne) = Sheets("BDonnées").Range("A" & i)
Sheets("Synthèse").Range("B" & Ligne) = Sheets("BDonnées").Range("H" & i)
Sheets("Synthèse").Range("C" & Ligne) = Sheets("BDonnées").Range("G" & i)
Sheets("Synthèse").Range("D" & Ligne) = Sheets("BDonnées").Range("D" & i)
Sheets("Synthèse").Range("E" & Ligne) = Sheets("BDonnées").Range("C" & i)
'Sheets("Synthèse").Range("F" & Ligne) = Sheets("BDonnées").Range("B" & i)
Sheets("Synthèse").Range("G" & Ligne) = Sheets("BDonnées").Range("B" & i)
Sheets("Synthèse").Range("H" & Ligne) = Sheets("BDonnées").Range("E" & i)
Sheets("Synthèse").Range("I" & Ligne) = Sheets("BDonnées").Range("F" & i)


Dans la ligne :

If Sheets("BDonnées").Range("D" & i) & UCase(Format(Format(Date, "dd") & "/"
& Sheets("BDonnées").Range("G" & i) & "/" & Format(Date, "yy"), "mmmm")) &
Sheets("BDonnées").Range("H" & i) & Sheets("BDonnées").Range("A" & i) =
Sheets("infos").Range("A" & Me.ListBoxA.ListIndex + 1) &
Sheets("infos").Range("C" & Me.ListBoxM.ListIndex + 1) &
Sheets("infos").Range("E" & Me.ComboBoxAN.ListIndex + 1) & Site Then

je vérifie que pour la ligne traitée tous les paramètres selectionnés dans
le UserForm correspondent au paramêtre des collonnes appropriés pour
déclencher la recopie des données dans l'onglet "Synthèse" :

Sheets("Synthèse").Range("A" & Ligne) = Sheets("BDonnées").Range("A" & i)
Sheets("Synthèse").Range("B" & Ligne) = Sheets("BDonnées").Range("H" & i)
Sheets("Synthèse").Range("C" & Ligne) = Sheets("BDonnées").Range("G" & i)
Sheets("Synthèse").Range("D" & Ligne) = Sheets("BDonnées").Range("D" & i)
Sheets("Synthèse").Range("E" & Ligne) = Sheets("BDonnées").Range("C" & i)
'Sheets("Synthèse").Range("F" & Ligne) = Sheets("BDonnées").Range("B" & i)
Sheets("Synthèse").Range("G" & Ligne) = Sheets("BDonnées").Range("B" & i)
Sheets("Synthèse").Range("H" & Ligne) = Sheets("BDonnées").Range("E" & i)
Sheets("Synthèse").Range("I" & Ligne) = Sheets("BDonnées").Range("F" & i)


et ensuite de sortir de la boucle par la ligne :

Exit Do


Il va de soit donc qu'une seule ligne peux correpondre à la sélection

Je ne pensaits pas que plusieurs lignes pouvait répondre aux crières choisis

Si tel est le cas inhibe la ligne :

Exit Do

en mettant une côte devant ainsi :

'Exit Do

rajoute juste aprés la ligne (avant le End If):

Ligne = Ligne + 1


La boucle donc ira systématiquement à son terme récupérant toutes les
données des lignes répondant aux différents choix réalisé dans ton UserForm
pour les rapporter en onglet "Synthèse"

j'espère ainsi que celà te conviendra

Donnes moi des nouvelles !!!!!!
1 2 3