Récupérer l'indice de ligne vide

Résolu
sarah -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. sarah
     
    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
  3. sarah
     
    ç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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      vous m'avez sauvé la vie Vous êtes sure de ne pas exagérer un tout p'tit peu???
      A+
      0
    2. sarah
       
      Quand il s'agit de mon projet de fin d'études, je pense que non y a d'exagération. :)
      0
    3. sarah
       
      Quand il s'agit de mon projet de fin d'études, je pense que non y a pas d'exagération. :)
      0
  4. sarah
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. sarah
       
      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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. sarah
       
      ça marche , merci beaucoup
      J'aurai pas deviner.
      Merci 1000000 fois.
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sarah
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      Regarde ce tutoriel sur les textbox
      0
  7. piopicolo Messages postés 1422 Statut Membre 200
     
    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