fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009
-
24 mars 2009 à 15:36
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009
-
15 mai 2009 à 14:05
Bonjour,
Je suis un débutant en programmation VBA - Excel, et je dois faire dans le cadre de mon stage une application, pour récupérer des données dans de différentes feuilles Excel qui sont en relation par des codes différents, et je n’en ai pas d'idée pour commencer mon projet, sachant que j'ai regardé déjà des cours en ligne, mais malheureusement ça ne m’a pas aidé vraiment.
Au fait, je ne vois pas comment interroger ces feuilles à partir du VBA, et par ou commencer ?
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDernière intervention 4 février 2011 29 mars 2009 à 22:12
Hello,
Je crois que l'idée tu l'avais toi même : créer une userform avec 2 listbox 1 dans laquelle tu pourra sélectionner le code naf et 1 où tu pourras choisir un libellé.
Ensuite pour les infos à retrouver je les ferais apparaitre dans des textbox.
Pour lancer la recherche un bouton rechercher.
Pour le comment la faire marcher, 1 solution serait de se servir d'une feuille Excel en caché afin d'y appliquer les formules (recherchev) qui vont bien.
Sorry pour le délai et je dois avouer que j'avais un peu zappé.
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDernière intervention 4 février 2011 21 avril 2009 à 13:13
Hello,
Ceci pourra t'aider à transformer tout en majuscule:
Dim cell As Range
For Each cell In Range("a1:b2") 'ici modifier pour correspondre à la plage désirée
cell.Value = UCase(cell.Value)
Next cell
Pour les 2 listbox:
Tu peux paramétrer par défaut la listbox2.visible= false
Tu peux ajouter du code dans l'évennement Listbox1_Click. Code de ce type:
Listbox1.visible=false
(ici le code chargement de la listbox2)
listbox2.visible = true
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 24 mars 2009 à 17:42
D'abord je te remercie pour ta réponse rapide,
je suis en stage (bases de donées et developpement) dans les assurances, donc je dois faire une application, qui permettra au gens de trouver des collectivités en entrant des codes NAF...
Au fait j'ai 4 feuilles excel, la 1ere feuille(NAF) contient des code NAF, la 2eme feuille(CCN), la 3eme feuille(CCN_NAF)" relation entre les 2 tables NAF et CCN, pour pouvoir chercher un code NAFdans l'application et à partir de ce code naf je doit avoir comme resultat une collectivité et bien sur son code CCN qui est dans la 2eme feuille et puis avoir des information complémentaires sur ce code CCN qui sont à leur tour dans la 4eme feuille(CCN_complément).
Donc maintenant, je dois creer une aplication VBA, genre avec un bouton rechercher( pour rentrer un CODE NAF ou UN libellé), et un bouton valider, et après des bouton genre fermer et retour.
MERCI d'avance .
Vous n’avez pas trouvé la réponse que vous recherchez ?
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 30 mars 2009 à 11:11
Salut USERRRQI115!
merci pour ta réponse, j'ai commencé à avoir des idées la dessus, et comme ça tu me rassure aussi , donc il reste du code à faire maintenant.
merci encore !
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 20 avril 2009 à 10:56
salut USERRRQI115,
ça fait longtemps, mais au fait c'est vrai j'ai avancé, je suis un pe content enfin un peu, puisque ce n'est pas fini!, je voulais te demander si tu savais comment on peu éviter 2 lisBox, et à partir juste du 1er affichage on click dessu et il nous renvoi sur un 2eme affichage( soit disant les info d'une autre feuille)? et aussi comment on peut faire pour que la saisie en miniscule et en majuscule soit la même( j'ai que du majuscule dans mes feuilles, mais a la recherche on peu taper en miniscule), j'espere tu comprend ce que je veux dire, j'attend ta réponse stp. a bientôt.MERCI
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDernière intervention 4 février 2011 20 avril 2009 à 15:18
Hello,
Pour l'histoire de majuscule/minuscule le plus simple est de retraivailler la saisie :
laisser la saisie "libre" et transformer la saisie en Majuscule en utilisant Ucase.
En ce qui concerne les 2 listbox, j'aurais besoins de plus de détails, mais globalement, tu pourrais au choix :
- Recharger ta listbox avec d'autre données.
-Avoir 2 Listbox supperposées mais une seule visible à la fois.
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 20 avril 2009 à 16:09
merci pour ta réponse trés rapide!
pour les majuscule, jai essayé Ucase sa marche ,mais comme c'est la même fonction pour les autres colones, donc c'est un probleme,(car je dois aussi saisir un libellé ex:"" Elevage de volailles" qui est en miniscule lui dans la feuille" je sais pas si je dois mettre ttes les feuilles en majuscules ou pas , en tout cas pour l'instant c'est le plus facile pour moi.
sinon, je vois pas trop pour la superposition, en fait dans la 1ere listBox, j'affiche ex: le code 012G( = 012g), et dans la 2em les informations concernant ce code 012g (012G), donc ce que je veux c'est une fois que j'affiche le 012g (012G), je clik dessus et il me donne le reste, c'est à dire(la 2eme listBox). sinon il y aura trop de données au même temps et l'utilisateur se perdera. j'espere que c'est plus clair.MERCI
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 28 avril 2009 à 10:38
Salut,
j'ai suprimé la 2ème listBox, et j'ai regroupé l'affichage dans la 1ère, et sa me va comme ça normalement!...Par contre j'ai une autre question stp,pour la saisie, dans mon programme, si tu tape un code complet ou un libellé complet sans faute ( par rapport à la feuille excel) il t'affiche tout, sinon il te met saisie incorrecte, moi ce que je veux mnt c'est la saisie automatique, je sai pas si on peut l'appler comme ça!! ganre tu tape juste 012 il t'affiche : "012G","012j","012f" ou si tu met juste "01" et ben la il t'affiche tt les codes ou il ya "01", et la même chose pour les libellé, mnt si tu tape "elevage de volailles" il t'affiche tt normal, mais s'il y une faute il trouve pas , donc je cherche comment faire pour faciliter la recherche... j"espere que je suis clair. Merci d'avance userrrqi115
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 14 mai 2009 à 11:43
salut,
peut être tu n'avais pas eu le temps de me répondre, mais ça ce n'est pas vraiment important ( la question que je t'ai posée la dernière fois), par contre là je te demande si tu saurai comment SUPRIMER les doublons dans l'affichage dans ma liste box, car par exemple je saisi un code:9524Z et il affiche 361K,361K et 361A, donc je cherche comment afficher seulement une fois le même code. Réponds moi si tu as le temps stp.
MERCI
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDernière intervention 4 février 2011 15 mai 2009 à 11:33
Hello,
Désolé pour la dernière fois, le temps est une denrée rare actuellement (2 enfants c'est du taf 17 et 4 mois). J'ai du lire ce que tu demandais et puis n'est pas eu le temps de répondre, et c'est parti aux oubliettes.
Pour ta demande actuelle, je ne garantie pas une réponse rapide mais si tu pouvais au moins envoyer le code de chargement de ta listbox ça sera utile.
fario75
Messages postés13Date d'inscriptionmardi 24 mars 2009StatutMembreDernière intervention30 juin 2009 15 mai 2009 à 14:05
salut!
tout d'abord je te dis bon courage.
sinon j'espere que je ne te dérange pas trop, mais voila tu le fait si tu as le temps sinon je comprend, merci bcp.
voila le code :( JE TE MET TOUT LE CODE DE MA 2ème APPLICATION, juste NV et ancien code NAf, et les bouts de code en commentaire ça marche pas, c juste des petits essais).....
----------------------------------------------
Private Sub CommandButton1_Click()
Dim cpt, notreligne1, notreligne2, cptCCN_Naf As Integer
Dim codeNaf As String
Dim collection_naf As New collection
cptCCN_Naf = 0
ListBox1.Clear ' réinitialiser la listBox a chaque fois
cpt = 2
notreligne = 0
'-------------------------------------- transformer tout en majuscule:
Dim cell As Range
For Each cell In Range("B2:B710") 'ici modifier pour correspondre à la plage désirée( 714: est la derniere ligne
cell.Value = UCase(cell.Value)
Next cell
codeNaf = TextBox1.Text 'saisie
codeNaf = UCase(TextBox1.Text)
While Worksheets("Naf5-Naf4").Range("A" & cpt).Value <> "" 'tant qu'on est pas à la fin
If (codeNaf = Worksheets("Naf5-Naf4").Range("A" & cpt).Value) Then
codeNaf = (Worksheets("Naf5-Naf4").Range("A" & cpt).Value)
notreligne = cpt
End If
cpt = cpt + 1
Wend
If notreligne <> 0 Then ' car on sorti de la boucle en haut dc fo vérifier
Label2.Caption = "Code Naf :" & Worksheets("Naf5-Naf4").Range("A" & notreligne).Value & vbCrLf & "Dénomination: " & Worksheets("Naf5-Naf4").Range("B" & notreligne).Value
'----------------------------------------
notreligne = 0 ' réinitialisation
cpt = 2
While Worksheets("Naf5-Naf4").Range("A" & cpt).Value <> ""
If (codeNaf = Worksheets("Naf5-Naf4").Range("A" & cpt).Value) Then
collection_naf.Add (Worksheets("Naf5-Naf4").Range("C" & cpt).Value) 'on stock ds la collection
End If
cpt = cpt + 1
Wend
cpt = 2
While Worksheets("Naf5-Naf4").Range("C" & cpt).Value <> ""
For cptCCN_Naf = 1 To collection_naf.Count
If (collection_naf.Item(cptCCN_Naf) Worksheets("Naf5-Naf4").Range("C" & cpt).Value) Then 'Or (collection_naf.Item(cptCCN_Naf) Worksheets("Naf5-Naf4").Range("C" & cpt).Value)) Then
notreligne = cpt
ListBox1.AddItem ("l'ancien code naf: " & Worksheets("Naf5-Naf4").Range("C" & notreligne).Value)
ListBox1.AddItem (" :" & Worksheets("Naf5-Naf4").Range("D" & notreligne).Value)
ListBox1.AddItem ("_______________________________________________________ ")
ListBox1.AddItem (" ")
End If
'collection_naf.Sorted = True
'Boucle qui élimine les doublons dans la liste
' While cptCCN_Naf < collection_naf.Items.Count
' If collection_naf.Items(cptCCN_Naf + 1) = collection_naf.Items(cptCCN_Naf) Then
' collection_naf.Items.Remove (collection_naf.Items(cptCCN_Naf))
' cptCCN_Naf = 0
'Else
' cptCCN_Naf = cptCCN_Naf + 1
' End If
'Wend
Next
cpt = cpt + 1
Wend
' For cptCCN_Naf = 1 To collection_naf.Count
'If cptCCN_Naf = collection_naf.Count Then
'Exit Sub
'End If
'If (collection_naf.Item(cptCCN_Naf) = collection_naf.Item(cptCCN_Naf + 1)) Then
'détruire collection_naf.Item(cptCCN_Naf + 1)
'End If
'Next
Else
MsgBox "Aucune donnée trouvée"
End If
End Sub
Private Sub Image1_Click()
End Sub
Private Sub CommandButton2_Click()
'Sortie du programme
'msg " voulez vous vraiment quitter l'application"
'MsgBox msg
End
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Label2_Click()
End Sub
Private Sub ListBox1_Click()
' c la quand doit afficher
End Sub