Visual sous excell

elcondor -  
 elcondor -
Bonjour,
Dans un programme visual basic sous excell
à un moment je veux que celui donne le nom d'une variable au contenu de la cellule tant que celle ci est non vide et arréte cette procedure dés qu'il trouve une cellule vide
exemple
il va en a4 trouve une valeur la nomme a
donc descend d'une ligne trouve une valeur la nomme b
descend d'une ligne trouve une valeur la nomme c
etc jusqu'à ce que l'on tombe sur une cellule vide ou la on passe à une autre procédure
biensur la cellule vide risque de ne pas être toujours dans la même cellule
j'espère que j'ai été clair
merci de votre aide
daniel
A voir également:

2 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Tu peux utiliser une boucle While ...Wend ou Do While :

Dim Lig As Long
Lig = 2
While Range("A") & lig).Value <> ""
   'Ici le code à excécuter tant que la cellule n'est pas vide
   'Dès qu'on trouve une cellule vide on sort de la boucle
Lig = Lig + 1
Wend
   'Ici le code à exécuter après la première cellule vide


;o)
0
elcondor
 
merci, cela à l'air de marcher le programme descend bien de ligne en ligne tant que le contenu de la cellule n'est pas vide et sort de cette procédure dés qu'il en rencontre une, par contre ce que je m'explique pas c'est qu'il garde pour a toujours la même valeur qui est contenu dans la première cellule rencontrée et ne change pas en fonction des différents contenu de cellules rencontrées.
De plus dans mon projet non seulement il faudrait récupérer le contenu des différentes cellules non vide mais les nommer avec des noms différents afin de pouvoir les copiers dans differents labels d'une boite de dialogue.
Voici ce que j'ai fait grâce a vos conseil mais qui ne me satisfait qu'en partie

Private Sub CommandButton1_Click()
Dim lig As Long
lig = 2
Range("a2").Select

While Range("a" & lig).Value <> ""

a = ActiveCell.Value

lig = lig + 1

Wend
Label1.Caption = a
Label2.Caption = b
Label3.Caption = c

End Sub

je vous remercie par avance de vos conseils avisés
daniel
0
elcondor
 
je m'excuse peut être que je me répête mais je n'arrive pas à prmière vu à répondre à la personne voulu ou en tout cas je ne suis pas sûr d'y être arrivé

Merci, cela à l'air de marcher le programme descend bien de ligne en ligne tant que le contenu de la cellule n'est pas vide et sort de cette procédure dés qu'il en rencontre une, par contre ce que je m'explique pas c'est qu'il garde pour a toujours la même valeur qui est contenu dans la première cellule rencontrée et ne change pas en fonction des différents contenu de cellules rencontrées.
De plus dans mon projet non seulement il faudrait récupérer le contenu des différentes cellules non vide mais les nommer avec des noms différents afin de pouvoir les copiers dans differents labels d'une boite de dialogue.
Voici ce que j'ai fait grâce a vos conseil mais qui ne me satisfait qu'en partie

Private Sub CommandButton1_Click()
Dim lig As Long
lig = 2
Range("a2").Select

While Range("a" & lig).Value <> ""

a = ActiveCell.Value

lig = lig + 1

Wend
Label1.Caption = a
Label2.Caption = b
Label3.Caption = c

End Sub

je vous remercie par avance de vos conseils avisés
daniel
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Pour le problème de "a", ça vient de là : Range("a2").Select

Pour avoir la dernière valeur valide, il faut faire comme ça :
Dim lig As Long 
lig = 2 

While Range("a" & lig).Value <> "" 

a = Range("a" & lig).Value  

lig = lig + 1 

Wend 
Label1.Caption = a 
Label2.Caption = b 
Label3.Caption = c 

End Sub 


Pour la 2ème question, je ne comprends pas ce que tu cherches à faire.

;o)
0
elcondor
 
pour la deuxieme question : c'est simple je cherche à rechercher dans une colonne des valeurs qui iront remplir des labels d'une boite de dialogue dés que celle ci s'ouvrira, sachant que ces valeurs peuvent avoir changé depuis la dernière ouverture.
En fait je résume j'ai une boite de dialogue avec plusieurs label et je veux qu'à chaque fois que j'ouvre cette boite de dialogue il remplisse ces différent label par les valeurs de la dite colonne par contre il se peux qu'il n'y ai pas toujours le même nombre de valeur à remplir (d'où la boucle)
je veux donc qu'il remplisse le label 1 avec la premiere cellule si non vide
qu'il remplisse le label 2 avec la deuxième cellule si non vide etc et si il trouve 5 valeurs alors qu'il y ai 6 labels ce n'est pas grave il laissera celui non remplit
j'espère que j'ai été assez clair
merci encore
daniel
0