Compter un nombre de ligne

k4RADOC

XLDnaute Nouveau
Bonjour à tous,


Dans un premier temps je souhaiterais savoir comment faire pour compter un nombre de ligne entre deux cellules vide.
Ensuite je souhaiterais écrire un message autant de fois que le nombre trouvé lors de mon premier test.

Je vous envoie le fichier exemple pour mieux comprendre.
 

k4RADOC

XLDnaute Nouveau
Re : Compter un nombre de ligne

En gros il faut :

- Trouver la première cellule vide de la colonne A à partir de A5, on peut le faire via cette fonction
Code:
Sub cellulevide()
   
    If Range("A5").Value = "" Then
        Range("A5").Select
        Else
    If Range("A5").Value <> "" And Range("A6").Value = "" Then
        Range("A5").Select
    Else
        Range("A5").End(xlDown).Offset(1, 0).Select
    End If
End If
End Sub
- Trouver la première cellule vide de la colonne C à partir de C5 (via la même fonction)
- Compter le nombre de ligne entre ces deux colonnes (dans l'exemple il y en a 3)
- Selectionner la première ligne non vide en A (via le code donné précedemment et écrire bonsoir sur le nombre de ligne que l'on a trouvé (3 dans l'exemple)


Ce qui a pour conséquence d'écrire bonsoir en A8 A9 A10.

Merci d'avance et bon courage :)
 

Pièces jointes

  • exemple.xls
    23 KB · Affichages: 42
  • exemple.xls
    23 KB · Affichages: 39
  • exemple.xls
    23 KB · Affichages: 44

Efgé

XLDnaute Barbatruc
Re : Compter un nombre de ligne

Bonjour k4RADOC, Bonjour Philippe
En une ligne peut être ?
VB:
Sub test()
With Sheets("Feuil1")
    .Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), _
    .Cells(Rows.Count, 3).End(xlUp).Offset(0, -1)).Value = "Bonsoir"
End With
End Sub
Cordialement
 

k4RADOC

XLDnaute Nouveau
Re : Compter un nombre de ligne

Salut Efgé,
Comme d'habitude tes réponses marchent du tonnerre ! Pour ma culture perso et si tu as le temps peut tu m'expliquer pas à pas ce que ton code fait ? Tant pis si tu n'as pas le temps ton aide ma déjà bien aidé.
 

Efgé

XLDnaute Barbatruc
Re : Compter un nombre de ligne

Re
Alors , on décompose:
On part d'une base de code connue
VB:
Sheets ("Feuil1").Range("A1:A10")
Donne la plage de A1 à A10 de la feuil1
Maintenant on peux utiliser Cells [Cells(Ligne, Colonne)], ce qui donne pour la même plage
VB:
Sheets ("Feuil1").Range(Sheets("Feuil1").Cells(1,1),Sheets("Feuil1").Cells(10,1))
Pour trouver la dernière cellule remplie en colonne A (colonne 1), on part de la dernière ligne et on remonte (xlup)
VB:
Sheets ("Feuil1").Cells(Rows.Count, 1).End(xlUp)
Pour trouver la cellule du dessous on utilise OFFSET(Décalage en ligne, Décalage en colonne)
VB:
Sheets ("Feuil1").Cells(Rows.Count, 1).End(xlUp).Offset(1,0)
Pour trouver la dernière cellule en colonne C (3)
VB:
Sheets ("Feuil1").Cells(Rows.Count, 3).End(xlUp)
Mais là on veux décaler d'une colonne vers la gauche (-1) (- 1 par ce que les cellules sont fusionnées)
VB:
Sheets ("Feuil1").Cells(Rows.Count, 1).End(xlUp).Offset(0, -1))
On arrive donc, pour la plage à :
VB:
Sheets("Feuil1").Range(Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), _
    Sheets("Feuil1").Cells(Rows.Count, 3).End(xlUp).Offset(0, -1))
Reste à donner la valeur de cette plage (puisque toutes les cellules ont même valeur):
VB:
Sheets("Feuil1").Range(Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), _
    Sheets("Feuil1").Cells(Rows.Count, 3).End(xlUp).Offset(0, -1)).Value = "Bonsoir"
Comme les Sheets("Feuil1") deviennent lourdes à la fin :D on utilise with / En With Tous les ranges et Cells précédés d'un point seront ratachés à ce With
VB:
With Sheets("Feuil1")
    .Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), _
    .Cells(Rows.Count, 3).End(xlUp).Offset(0, -1)).Value = "Bonsoir"
End With

Ne pas oublier de commencer par un sub Toto et de finir par un end Sub :D

Cordialement
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 604
Membres
104 224
dernier inscrit
Brilma