[VBA] explication Cells(Row.Count, 1).End(xlUp).Row + 1

Bonjour !

Pour un fichier excel, je souhaite pouvoir remplir une plage de cellule à partir d'un formulaire (combinant textbox et checkbox.caption).

Cependant, je voudrais pouvoir remplir une plage de cellule précise. C'est à dire qu'il faut imaginer un en-tête et un pied de page entourant ma zone de travail.

J'utilise le code suivant :

With Sheets("TRAME").Range("A38", "N47") Ln = Cells(Row.Count, 1).End(xlUp).Row + 1 Cells(Ln, 1).Value = phase_travail 'phase_travail désignant ici un textbox Cells(Ln, 1).Select 'juste pour savoir en testant où le code travail End With

Mais dans ce cas précis, il rempli la dernière ligne, soit en dessous de mon "pied de page".

Par confidentialité je ne peux fournir le fichier source... désolé

J'espère avoir était suffisamment clair !!

Bonne journée,

Bonjour,

Voilà l'explication détaillée de cette instruction :

Cells(Row.Count, 1).End(xlUp).Row + 1

Cells(Ligne, Colonne) désigne une cellule référencée par un indice de ligne et un indice de colonne. Cells(1, 1) correspond à A1.

Rows.Count : Rows (Lignes en anglais) et count (compte en anglais) est une instruction qui renvoie le nombre totale de lignes d'une feuille. Ce nombre dépend uniquement de la version de Excel (65 536 sur les versions avant Excel 2007, 1 048 576 pour les versions ultérieures).

.End(xlUp) : s'utilise sur une plage de départ et renvoie à la première cellule non-vide si la cellule de départ est vide, ou la première vide si la cellule de départ est non-vide. La partie entre parenthèse désigne le sens de recherche (xlUp : vers le haut, xlDown vers le bas, xlToLeft vers la gauche, xlToRight vers la droite). Cette action est réalisable sous Excel en appuyant simultanément sur CTRL et une des flèches à côté du pavé numérique.

.Row : Propriété d'une plage, qui renvoie son numéro de ligne (Exemple : Range("A1000").Row renvoie 1000)

Cette instruction sert donc à déterminer la première ligne vide en partant de la dernière cellule de la colonne 1 de ta feuille et en remontant vers le haut. Sans le "+1" à la fin, ce serait la ligne du dessus qui correspond à la dernière non vide.

Merci Pedro pour ce retour, mais soit j'ai pas compris l'une des composantes de cette ligne, soit je n'arrive pas à lui dire de faire ce travail (rechercher la dernière cellule non vide en partant du bas) dans une plage donnée (et non en dessous de ce fameux pied de page).

Je pensais qu'en indiquant with sheets.range ca allait fonctionner mais non il reste sur la dernière cellule de la colonne A.

Remplace Rows.Count par le numéro de ta dernière ligne possible.

Je n'ai aucun résultat, ni message d'erreur ni la valeur du textbox nul part.

Par contre si je garde le .range("A38","N47") après le sheets, ln me renvoi une erreur.

J'en suis arrivé à ce code là :

With Sheets("TRAME") Ln = .Cells(47, "A").End(xlUp).Row + 1 .Cells(Ln, 1).Value = phase_travail End With

Mais dans cas l'info dans le textbox "phase_travail" n'a pas l'air de s'inscrire dans la feuille

AH ! d'après un test il sélectionne la cellule au dessus (qui fait parti de " l'en tête")). C'est un cellule qui fusionne la cellule A35:C37 ...

Du coup je peux truander et défusionner ma celulle A35:C37, je mets un caractère en A37 pour "bloquer" le rows.count et je mets une zone de texte pour remplacer le texte normalement présent en A35:C37.

Désolé si je suis pas clair...

Par contre si tu as une solution pour éviter cette "technique" !!

Bonjour,

mets un fichier exemple anonymisé.

Bonjour,

Je réactive ce vieux sujet, mais je voudrais savoir comment faire pour sélectionner la dernière ligne plein -1.

J'ai essayé cela mais ça ne semble pas fonctionner:

Cells(Row.Count, 1).End(xlUp).Row -1

bonjour,

un proposition, il faut qu'il y ait au moins 2 lignes non vides. sinon erreur 1004

Cells(Rows.Count, 1).End(xlUp).Offset(-1, 0).Select
Rechercher des sujets similaires à "vba explication row count end xlup"