Combox [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
6 septembre 2007
-
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007
-
Bonjour je souhaite automatiser une fonction qui fait une boucle afin
de recopier un tableau générer par l'appelle d'une combobox.

mon
problème est que lorsquej'apelle le formulaire il s'ouvre mais la
combobox n'est pas renseigner automatiquement en fonction de la valeur
de champs choisie. j'espère etre clair.  voici le code découpé avec les
signification.

'cellule de départ A5 qui représente mon num emprunt qui est le point commun entre la combobox et cette feuille

Range("a5").Select
ActiveCell.Offset(0, 0).Select
If ActiveCell.Offset(0, 0).Value <> "" Then

'la boucle doit se lancer  à partir du moment ou la valeur de la cellule est pleine
Do While ActiveCell.Offset(0, 0).Value <> ""

'la valeur de ma cellule prend le nom de numemp2 qui devient la valeur text qui doit remplir la combobox automatiquement
'afin de lancé la macro qui génére le tableau.

Dim numemp2 As Double
numemp2 = ActiveCell.Offset(0, 0).Value
res = numemp2
evalemprunt.Show
ComboBox = numemp2

'la c'est la recopie des resultat desque le tableau est complété

Sheets("état emprunt").Select
Range("b87:f87").Select
Selection.Copy
Sheets("étatdette").Select
ActiveCell.Offset(0, 21).Select
ActiveSheet.Paste

'on
passe a la première cellule de la ligne suivante et la boucle doit
recommencer a générer un tableau en fonction de la valeur de 'celleci
la boucle s'effectue jusqu'a ce que la cellule soit vide

ActiveCell.Offset(1, -21).Select
Loop
End If
ActiveCell.Offset(0, 0).Value = ""

End Sub

j'ai reussi a automatiser la recopie en fonction de la valeur de la cellule je voudrais juste avoir un code qui renseigne automatiquement la combobox pour relancer l'appli

Laubuz

11 réponses

Messages postés
9
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
8 septembre 2007

Et j'ai oublié de dire que si tu places ton evalemprunt.show à l'intérieur d'une boucle, forcément tu demandes X fois à VBA de dessiner la fenêtre ce qui consomme aussi du temps de calcul.

<hr />AglarEdain
J'avais cherché une signature originale... mais j'ai rien trouvé.
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

>laubuz   Honnêtement jrivet fait partie des personnes très acitves sur ce frum pour dépanner les gens, tu n'as qu'à regarder le nombre de réponses qu'il apporte régulièrement.
Je suis un peu moins nouveau que toi sur CS donc je peux t'expliquer qu'il y a un ras-le-bol général en ce moment, vu que beaucoup de gens postent leur message dans les mauvais topics (et notamment les gens qui font du VBA).

Ajoute à ça les réguliers manquement au règlement, et tu comprendras que tu as fait une petite erreur... et disons que t'as un peu trinqué pour tout ceux qui l'ont faite avant toi!!

Personnellement, ça fait un an maintenant que je suis sur ce forum, et je trouve au contraire que les personnes qualifiées cherchent énormément à nous aider sans pour autant juger notre niveau comme sur d'autres forums où tu te fais régulièrement traiter de brèle quand tu comprends pas!

A nous les débutants de faire en sorte que nos posts soient les plus clairs possibles, au bon endroit et avec toutes les infos!!
@ bientôt

Tubafat  
Avant d'imprimer, pensez à l'environnement
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
121
Salut,

Si tu fais du VBA, pourquoi tu poste dans le forum VB 6 ???

Je déplace vers le forum approprié !
______________________________________
DarK Sidious
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
T'es pas non plus oblige de poser deux fois la meme question dans la meme matinée... tu pourrais attendre et en attendant essayer de ton côté.....

Aucun patience, aucun respect du règlement...

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

Bonjour,
renseigner la combox???
une petit passage dans l'aide de VBA devrait vite te renseigner...
Combobox.additem (numemp2)

Tubafat  
Avant d'imprimer, pensez à l'environnement
Messages postés
3
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
6 septembre 2007

dsl pour le topic placer au mauvais endroit

jrivet si ca te derange de repondre ne te sens sincèrement pas obligé.

j'ai besoin d'aide mais ca ne veux pas dire que je ne fait rien de mon coté de plus si tu lisais avant de poster tu verrai qu'il y a une différence entre les 2 messages mais je suppose que c'est plus simple de lancer des pierres.

et merci tubafat pour le renseignement

Laubuz
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Re,
C'est pas que cela me dérange de répondre. Mais c'est simplement que le post et repost de question à quelques heures est tu avoueras un peu excesif non?

A par "polluer" le forum et mélanger les esprits, cela n'apporte rien, ni à toi ni à la communauté. Voila c'est tout ce que je voulais dire.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
9
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
8 septembre 2007

Alors pour répondre au tout premier message : Tu as raison de t'inquiéter car effectivement tu n'es pas clair du tout.

3 choses que tu dois absolument apprendre :
1- T'exprimer clairement.
2- Simplifier ton code. (L'optimiser aussi)
3- Lire l'aide ! (RTFM Power)

Pour illustrer le deuxième point, je t'assure avoir vraiment gagné une migraine à essayer de comprendre ton code, et ce que tu essayais de faire. Et même avec les annotations, je ne suis pas sur d'avoir compris.

Mais je vais quand même essayer de te proposer une version corrigée et simplifiée.


J'ai supposé que tu démarrais sur la feuille "étatdette", en testant la cellule A5, que tu voulais mettre les valeurs de la plage A5:Ax dans la ComboBox appelée "ComboBox1", et que pour une raison inconnue tu cherches à copier la dernière ligne de ton tableau d'emprunt en face de toutes les lignes de ton tableau de dettes (mais je ne comprend vraiment pas pourquoi).

MaLigne = 5
MaColonne = 1
Do While Sheets("étatdette").Cells(MaLigne, MaColonne).Value <> ""
   evalemprunt.ComboBox1.AddItem Sheets("étatdette").Cells(MaLigne, MaColonne).Value 
   Sheets("état emprunt").Range("B87:F87").Copy



   Sheets("étatdette").Cells(MaLigne, MaColonne + 21).Paste
   MaLigne = MaLigne + 1

Loop
evalemprunt.Show


Quelques réflexions/questions/informations :


Dans une combobox, tu peux mettre plusieurs valeurs pour un même item. Par exemple, j'avais créé un tableau de sélections de chantiers avec 2 colonnes visibles (nom du chantier et ville) et deux invisibles (numéro de gestion interne et numéro de ligne dans le tableau Excel).
Tu ne pouvais pas affecter comme tu l'as fait une valeur de type double à ta combo qui est un objet de type ComboBox. (Comme une clé à mollette n'est pas un nuage, ni un chiffre et vice-versa. On ne mélange pas les torchons et les serviettes.)D'ailleurs quand tu veux affecter à une variable une valeur d'objet, la syntaxe est : Set NomVariable ObjetDéjàDéfini ou Set NomVariable New NomDUneClasseDObjet
Et tu ne peux pas appeller ta ComboBox "ComboBox" car justement c'est le nom de la classe d'objet et que ça devrait créer un conflit d'interprétation.

Pour moi, ta condition If était certes une bonne idée, mais ton Do While ... Loop teste exactement la même condition. Le If fait doublon.

Pourquoi à la fin de ton code, tu affectes la valeur chaîne vide à la dernière cellule testée (qui était déjà vide du coup) ?

Je ne me souviens plus, mais je crois que c'est une mauvaise idée de mettre un Dim en plein milieu de ton code. Par soucis de clarté et de propreté, je réunis de toutes façons toujours mes Dim en tête de la procédure, de la fonction, ou du module concerné.

D'ailleurs, les deux variables numemp2 et res semblent inutiles. C'est le cas si tu ne les utilises pas dans une autre partie de ton programme. Comme tu définis localement numemp2, j'ai dans l'idée que tu ne l'utilises pas ailleurs.


Et cette obsession de faire des Select et des Offset de partout, c'est quelque chose qui consomme beaucoup de temps de calcul, or VBA est un langage interprété, donc déjà lent à la base. Tes macros s'exécuteront plus rapidement si tu ne fais pas de sélections, et Excel n'a pas besoin de sélectionner une cellule pour la manipuler.

J'espère avoir aider un peu.





<hr />

AglarEdain
J'avais cherché une signature originale... mais j'ai rien trouvé.
Messages postés
3
Date d'inscription
jeudi 6 septembre 2007
Statut
Membre
Dernière intervention
6 septembre 2007

je remercie tout le monde j'ai reussie a créer ma macro sans avoir besoin de passer par l'ouverture de l'userform.
comme on dit il y a toujours un moyen de contourner un obstacle.

le fait de sortir de mon programme pour chercher une soluce m'a permis de prendre du recul.

en effet cette macro consomme beaucoup de temps et de calcul.

Ps J rivet si il y a 2 fois le meme post c'est parceque j'ai voulu le deplacer dans un theme plus approprié mais ni arrivant pas j'ai été obliger de recopier. mais le genre de reponse est typique du forumeur FR qui au lieu de t'aider commence par t'enfoncer

Peace

Laubuz
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Re,
> re: Merci,[auteurdetail.aspx?ID=822002 tubafat] tu as très clairement exposé l'état d'esprit des membres actifs de ce forum en ce moment.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

Disons que depuis quelquetemps j'essaye d'être plus actif sur le forum dnas la mesure de mes moyens et quand je vois le temps que j'y passe, je commence à mieux comprendre certaines exaspérations (au passage bon courage à DarkSidious!!!)

Tubafat  
Avant d'imprimer, pensez à l'environnement