Récupérer l'indice de ligne vide

Résolu/Fermé
sarah - Modifié par sarah le 9/05/2011 à 16:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 11 mai 2011 à 16:08
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

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 mai 2011 à 16:11
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
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
ç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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 mai 2011 à 16:39
vous m'avez sauvé la vie Vous êtes sure de ne pas exagérer un tout p'tit peu???
A+
0
Quand il s'agit de mon projet de fin d'études, je pense que non y a d'exagération. :)
0
Quand il s'agit de mon projet de fin d'études, je pense que non y a pas d'exagération. :)
0
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 mai 2011 à 16:57
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 mai 2011 à 13:19
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
ça marche , merci beaucoup
J'aurai pas deviner.
Merci 1000000 fois.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
10 mai 2011 à 13:58
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

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

Posez votre question
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
11 mai 2011 à 16:08
Bonjour,
Regarde ce tutoriel sur les textbox
0
piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 193
9 mai 2011 à 16:06
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