VBA boucles

Fermé
Tokki - 26 mai 2011 à 14:53
 Tokki - 26 mai 2011 à 17:08
Bonjour,

Je suis actuellement sur un code vba qui me pause quelques petits problèmes
J'ai 2 combobox initialisés lors du démarrage de excel et un bouton pour valider le choix des combobox
Mon problème est que j'aimerais que lorsque je clic cela ajoute en cells(3,2) et 3,3 les valeurs des combobox
Et au second clic que ca s'enregistre en dessous
etc..

Je sais pas si je suis très clair :s
Voila une partie du code, j'ai plusieurs tests mais je crois que j'ai du mal a saisir comment je récupère la valeur des combobox :\
Je pensais par un indice i mais je sais pas trop comment ca fonctionne en vba :/
Si quelq'un a une solution ou un indice au moin^^' ca m'intéresse beaucoup! :)

Private Sub cmdConvoc_Click()
'Enregistre les valeurs dans la pages "Formations pour 1 Stagiaire"

'initialisation des variables
Dim i As Integer

For i = 3 To Range("B65536").End(xlUp).Row
'Enregistre la valeur de la comboBox cboNoms
Sheets("Formations pour 1 Stagiaire").Cells(i, 2).Value = cboNoms.Value
'Enregistre la valeur de la comboBox cboFormations
Sheets("Formations pour 1 Stagiaire").Cells(i, 3).Value = cboFormation.Value
Next i
End sub


Merci d'avance ^^'

7 réponses

melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
26 mai 2011 à 15:00
Bonjour,

je ne suis pas sure d'avoir bien tout compris.

Lorsque tu cliques une fois : ca enregistre en 3,2 et en3,3
lorsque tu cliques une 2e : ca enregistre en 4,2 et 4,3
lorsque tu cliques une 3e : ca enregistre en 5,2 et 5,3

pour ce que j'ai décris ci-dessus, voici le bout de code :
i=2
j=3
do while Sheets("Formations pour 1 Stagiaire").Cells(i, j) <>""
i=i+1
loop

'Enregistre la valeur de la comboBox cboNoms
Sheets("Formations pour 1 Stagiaire").Cells(i, j) = cboNoms.Value
'Enregistre la valeur de la comboBox cboFormations
Sheets("Formations pour 1 Stagiaire").Cells(i, j+1).Value = cboFormation.Value


dis moi si c'est ca que tu voulais et si ca marche!!
0
Merci beaucoup c'est exactement se que je cherchais, sauf que fallais inverser les valeurs de départ de i et de j ^^

Maintenant j'ai un autre problème :\

Je vais montrer le code ca sera le mieu pour voir mon problème^^


Dim i As Integer
Dim j As Integer
i = 3
j = 2
Do While Sheets("Formations pour 1 Stagiaire").Cells(i, j) <> ""
i = i + 1
Loop
'Enregistre la valeur de la comboBox cboNoms
Sheets("Formations pour 1 Stagiaire").Cells(i, j) = cboNoms.Value
'Enregistre la valeur de la comboBox cboFormations
Sheets("Formations pour 1 Stagiaire").Cells(i, j + 1).Value = cboFormation.Value


Jusque la tout va bien(encore merci :) ), et c'est après que ca se gate.
(j'ai fait un petit test sur la première ligne mais il aime pas^^')

'Enregistre des formules dans les cellules de la feuille "Formation pour un stagiaire"
'Récupère les données dans la feuille "I0ndividu" en fonction du nom sélectionné
Sheets("Formations pour 1 Stagiaire").Cells(i, j - 1).FormulaLocal = "=SI(RECHERCHEV(B"" &j "";All;2;FAUX)<>0;RECHERCHEV(B3;All;2;FAUX);"""")"
Sheets("Formations pour 1 Stagiaire").Cells(i, j + 2).FormulaLocal = "=SI(RECHERCHEV(B3;All;6;FAUX)<>0;RECHERCHEV(B3;All;6;FAUX);"""")"
Sheets("Formations pour 1 Stagiaire").Cells(i, j + 3).FormulaLocal = "=SI(RECHERCHEV(B3;All;7;FAUX)<>0;RECHERCHEV(B3;All;7;FAUX);"""")"
0
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
26 mai 2011 à 16:18
Bonjour,

Pour pouvoir le faire, enregistre une macro, écris tes formules, reprends le code et adaptes les. Car tels qu'elles elles ne fonctionnent pas.

Car il faut sélectionner la feuille puis la cellule.
mettre la formule indiquée par la macro enregistrée : si =if
recherchev = vlookup
faux = false...
0
ok, je vais essayer, mais pourtant ca marche très bien quand je fais ca sans la boucle donc je pense pas que ca soit ca le problème, mais je vais tenter^^
Je te dis si c'étais ca tout de suite :)
0

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

Posez votre question
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
26 mai 2011 à 16:40
Es-tu sur car je vois une faute de frappe que je n'avais pas vu, tu écris
Sheets("Formations pour 1 Stagiaire").Cells(i, j - 1).FormulaLocal = "=SI(RECHERCHEV(B"" &j "";All;2;FAUX)<>0;RECHERCHEV(B3;All;2;FAUX);"""")"


mais c'est
Sheets("Formations pour 1 Stagiaire").Cells(i, j - 1).FormulaLocal = "=SI(RECHERCHEV(B"" &j & "";All;2;FAUX)<>0;RECHERCHEV(B3;All;2;FAUX);"""")"
0
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
26 mai 2011 à 16:40
Il manque un & derrière ton j
0
J'ai déja essayé ca ca marche pas :/
0
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
26 mai 2011 à 16:51
et en enregistrant une macro???
0
Bon je viens de tester en enregistrant la macro puis j'ai essayer d'adapter pour la boucle, j'ai surement mal adapter pasque ca me fait des trucs bizares :/
J'ai rajouté ca :

Sheets("Formations pour 1 Stagiaire").Select Range("A" & j - 1).Select
ActiveCell.Formula = _
"=IF(VLOOKUP(RC[1],All,2,FALSE)<>0,VLOOKUP(RC[1],All,2,FALSE),"""")"


Et en fait ca me met la formule la ou ma souris a cliqué dans la feuille "Formations pour 1 Stagiaire" :\
0
C'est bon j'ai trouvé :)
A force d'y aller a taton ca paye xD
t'avais raison ca devait être un problème avec les formules, voila le code :)

Sheets("Formations pour 1 Stagiaire").Cells(i, j - 1).Formula = _
"=IF(VLOOKUP(RC[1],All,2,FALSE)<>0,VLOOKUP(RC[1],All,2,FALSE),"""")"


Un grand merci pour ton aide :) il m'a été précieux :)

Et bonne fin de journée! :)
0