Position première et dernière ligne de qq colonnes (Erreur inexpliquée sur l'une !)

  • Initiateur de la discussion Initiateur de la discussion YANN-56
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

YANN-56

XLDnaute Barbatruc
Bonsoir à ceux qui passeront par ici,

Ayant constaté une erreur dans une appli, je me suis construit le test joint.

Le repérage de la première ligne écrite est bon pour l'ensemble,
mais il y a une erreur en colonne "B".

Il y aurait-il là une prise en compte d'un en-tête de colonne genre Access?

Si oui comment le pallier?

Merci d'avance à qui saura me répondre.

Amicalement.

Yann
 

Pièces jointes

Re : Position première et dernière ligne de qq colonnes (Erreur inexpliquée sur l'une

Salut YANN-56 et le forum
Tu tombes sur les joies de End(xlDown) 😉
Excel ne détecte pas le fait qu'une cellule est non-vide ou vide, mais le changement d'état
On utilises fréquemment cells(Rows.Counts, "A").End(xlup), puisque la dernière ligne est généralement vide. Mais avec XlDown, il faut tester B1 et B2
Code:
Private Sub CommandButton1_Click()
For i = 1 To 6
    If Cells(1, i) = "" And Cells(2, i) = "" Then
        Cells(2, i + 7) = Cells(1, i).End(xlDown).Row
    Else
        Cells(2, i + 7) = IIf(Cells(1, i) = "", 2, 1)
    End If
    Cells(3, i + 7) = ActiveSheet.Cells(Rows.Count, (i)).End(xlUp).Row
Next i
End Sub
A+
 
Dernière édition:
Re : Position première et dernière ligne de qq colonnes (Erreur inexpliquée sur l'une

Bonsoir YANN-56,

L'explication est que tu cherches la première ligne ligne vide en partant de la ligne 1, donc ça te donne 9 pour la colonne B.

Pour y pallier, je te propose la modification suivante :

Code:
Private Sub CommandButton1_Click()

For i = 1 To 6
If Cells(1, i) <> "" Then pl = 1 Else pl = Cells(1, i).End(xlDown).Row
ActiveSheet.Cells(2, i + 7).Value = pl
ActiveSheet.Cells(3, i + 7).Value = ActiveSheet.Cells(Application.Rows.Count, (i)).End(xlUp).Row
Next i

End Sub

Espérant avoir répondu.

Cordialement.

EDIT : bonjour gorfael
 
Re : Position première et dernière ligne de qq colonnes (Erreur inexpliquée sur l'une

Merci Gorfael & Pascal,

Effectivement de tester cellule vide ou non est une solution.

Je vais opter finalement pour une façon de faire expéditive:

Quand j'ouvrirai une base de données d'un autre classeur (Ce qui est le cas) pour y copier informations;
systématiquement je lui ajouterai une première ligne vide en tête ... Le reste fonctionnera bien...
(Et en fermant ce dernier je le déclarerai "Saved")

Il n'en demeure pas moins que je vais hésiter entre cette idée,
et celles pertinentes que vous suggérez.

Je vous remercie vivement de m'avoir répondu. J'en ai pris bonne note. C'est sympa! 🙂

Bonne fin de fin de semaine à vous.

Yann

P.S. à Gorfael:
Je vais bien regarder cette affaire de "xlDown" et "xlUp"
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour