Récupérer l'indice de ligne vide

Résolu
Bonjour,

Je souhaite enregistrer des données à partir d'un formulaire dans une feuille excel.
J'ai besoin de selectuionner la première ligne vide de ma feuille et y copier les informations une par une, or je ne connais aucune fonction me permettant de récupérer cet indice.
Merci de m'aider.

6 réponses

  1. utilisez la formule recherche.V d'une matrice ou un tableau.
    faites un test sur le contenu avec la formule Cellule
    et vous la remplissez si le contenu est vide ou nul.

    A+
    -1
    1. Modérateur
      Bonjour,
      Il en existe plusieurs pourtant :
      Ces exemples sont valables pour la colonne A :
      Dim PremiereLigneVide As Long 'ou Integer selon le nbre de lignes
      PremiereLigneVide = Range("A65536").End(xlUp).Offset(1, 0).Row

      Nécessite un enregistrement des donénes au préalable :
      Dim PremiereLigneVide As Long 'ou Integer selon le nbre de lignes
      PremiereLigneVide = Range("A1").SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row

      Dim PremiereLigneVide As Long 'ou Integer selon le nbre de lignes
      PremiereLigneVide = Range("A1").End(xlDown).Offset(1, 0).Row

      Tu remarqueras l'emploi de Offset(1, 0) qui décale d'une ligne vers le bas et de 0 colonne à droite. En effet, les codes donnés sans .Offset(1, 0) renvoient l'indice de la dernière ligne complétée...
      0
      1. Bonjour,

        Je vous remercie de votre réponse,

        si j'ai bien compris "PIJAKU", la ligne suivante copie dans la variable PremiereLignevide l'indice de la ligne vide de la feuille?
        PremiereLigneVide = Range("A1").End(xlDown).Offset(1, 0).Row
        en partant de ce principe j'ai remplacer dans mon prograùmme l'indice de la ligne où je dois copier mes information par "PremiereLigneVide" , et à chaque fois il me copie ces valeurs dans la même ligne.
        0
        1. ça marche, j'ai oublier d'enlever une ligne fixant l'indice de la ligne à une valeur définie.

          Je vous remércie beaucoup, vous m'avez sauvé la vie.
          0
          1. Modérateur
            vous m'avez sauvé la vie Vous êtes sure de ne pas exagérer un tout p'tit peu???
            A+
            0
          2. Quand il s'agit de mon projet de fin d'études, je pense que non y a d'exagération. :)
            0
          3. Quand il s'agit de mon projet de fin d'études, je pense que non y a pas d'exagération. :)
            0
        2. il reste un petit détail, comme je fais des tests d'enregistrement dans les cellules. à chaque fois j'efface le contenue et je réenregistre, ça se décale d'une ligne, même si elle est vide.
          Je comprend pas pourquoi.
          J'ai essayé d'utiliser le test "isempty(mafeuille.range("A" & i) = true
          mais ça ne change rien.
          i est l'indice de ma ligne vide selon la formule du msg précédent.
          0
          1. Modérateur
            C'est du au fait que l'on a placé un Offset(1, 0)... Je pense.
            Mais là, sans voir ton fichier, il faudrait plus de précisions...
            0
          2. Bonjour,
            j'ai mis ce code:

            i = Range("A1").SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row
            ' Condition pour remplir si la cellule est vide
            If IsEmpty(Feuil1.Range("A" & i)) = True Then
            Feuil1.Range("A" & i).Value = Monformulaire.textbox1.Value

            J'ai essayé même sans la condition et àa le fait toujours.
            Dois je enlever l'Offset(1,0)??? ou bien y a t il une autre solution?
            0
          3. Modérateur
            Salut,
            Avec ce code :
            i = Range("A1").SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row 
            il faut absolument enregistré le classeur au préalable.
            Essaye donc en ajoutant :
            ThisWorkbook.Save
            i = Range("A1").SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row
            0
          4. ça marche , merci beaucoup
            J'aurai pas deviner.
            Merci 1000000 fois.
            0
          5. Modérateur
            J'aurai pas deviner Non effectivement. C'est pour cela que je l'avais indiqué...Nécessite un enregistrement des donénes au préalable. Mais pour ta décharge ça n'était pas très explicite.
            Le principal est que cela fonctionne maintenant.
            De rien et bonne continuation.
            0
        3. Bonjour,

          Me revoilà encore avec un nouveau problème.
          J'ai des valeur dans des textbox que je veux récupérer en tant que nombre à virgule, or en utilisant la fonction "Val" la valeur dans mes textbox est considérer comme "un entier" ce qui ne m'arrange pas.
          J'ai penser alors à utiliser "cdbl" or avec "cdbl" si ma textbox est vide mon programme bug du coup je sais pas quoi faire. j'ai besoin que le text dans ma textbox soir calculer en tenant compte de la virgule et si elle vide le considérer comme "0".
          S'il vous plait aidez moi.
          0