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
Configuration: Windows XP Internet Explorer 6.0

2 réponses

  1. 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
    1. 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
    2. 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
  2. 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
    1. 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