VBA EXCEL

Résolu
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 juin 2009 - 24 mars 2009 à 15:36
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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 ?

Merci pour votre aide  d'avance

16 réponses

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Derniè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é.

BR

USERRRQI115
Simple user
Great brain
3
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Derniè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 

BR

USERRRQI115
Simple user
Great brain
3
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
24 mars 2009 à 16:05
Hello,

Plus ton post sera précis quant au problème que tu rencontres plus tu auras de chance d'avoir des réponses.

Peux-tu être un peu plus précis : quelles données dois-tu récupérer ? As-tu un fichier Excel de base ?...

BR

USERRRQI115
Simple user
Great brain
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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 .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 juin 2009
27 mars 2009 à 17:13
ta pas eu une idée depuis,?!
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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 !
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
30 mars 2009 à 12:40
Hello,

Si je peux te donner un coup de pouce sur le code n'hésites pas.

BR

USERRRQI115
Simple user
Great brain
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 juin 2009
30 mars 2009 à 17:05
ok té super gentil, jte dirais ça après .


merci encore
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Derniè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.


BR
USERRRQI115
Simple user
Great brain
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 juin 2009
21 avril 2009 à 15:31
ah oui cool! ça marche super bien pour les majuscules, je regarderai les listBox (je ne sais pas encore) et je reviendrai vers toi.MERCI
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Derniè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.

BR

USERRRQI115
Simple user
Great brain
0
fario75 Messages postés 13 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 30 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

Private Sub TextBox1_Change()

End Sub

Private Sub UserForm_Click()

End Sub
0
Rejoignez-nous