1ere ligne non vide

Bonjour à tous,

Sans titre je ne vois pas comment faire pour déterminer la ligne 14,

- Sans mettre un titre en A1 avec un Range("A1").End(xlDown).Row

- Ou faire un step -1 sur une boucle à partir de la ligne 19 déterminée par un Range("A" & Rows.Count).End(xlUp).Row

2

C'est qui qui a la formule magique, sans mettre de titre svp ?

Merci

Bonjour

Comme ceci

msgbox WorksheetFunction.Match(1, Range("A:A").EntireColumn, 0) - 1

Cordialement

Super, merci Dan

Bonsoir,

S'il y a une possibilité que "Match" retourne une erreur (rien en colonne A), il faudrait envisager, peut-être, un double Range("A1").End(xlDown).Row, ou autre fonction grâce à find...

Ne pas oublier qu'une éventuelle modification du format peut altérer ce genre de recherche (du moins, il me semble de mémoire)...

Bonjour Dan pijaku, tous,

cà a marché un certain temps...désolé.

3
5test.xlsm (19.66 Ko)

Merci.

Salut Fronck,
Salut l'équipe,

je ne comprends déjà pas très bien ce que tu cherches à obtenir : tu m'expliques ?


A+

Bonjour,

C'est bon j'ai pris la fin de la liste précédente + 2.

Cdt

Bonjour

Essayez de comprendre la formule...

Dans votre premier message vous montrez le chiffre 1 à la ligne 15 et dans votre fichier le chiffre 14. Donc dans le code remplacez 1 par 14.
si vous voulez savoir où se trouver la référence N°, remplacez le chiffre 1 par --> "N°"

Cordialement

Bonjour,

Pour déterminer la première ligne (ou la dernière) d'une plage, je combine CountA et la méthode find, comme ceci :

Option Explicit

Sub Macro1()
Dim DLig As Long, PLig As Long
DLig = DerniereLigne(Columns(1))
PLig = PremiereLigne(Columns(1))
MsgBox "La plage " & Columns(1).Address & vbCrLf & "a pour première ligne : " & PLig _
                                         & vbCrLf & "et pour dernière ligne : " & DLig
End Sub
Private Function PremiereLigne(plage As Range) As Long
   'cas d'absence de données dans la plage à traiter :
   If WorksheetFunction.CountA(plage) = 0 Then PremiereLigne = plage.Cells(1, 1).Row: Exit Function
   'dans tous les autres cas :
   PremiereLigne = plage.Find("*", , , , , xlNext).Row
End Function
Private Function DerniereLigne(plage As Range) As Long
   'cas d'absence de données dans la plage à traiter :
   If WorksheetFunction.CountA(plage) = 0 Then DerniereLigne = plage.Cells(1, 1).Row: Exit Function
   'dans tous les autres cas :
   DerniereLigne = plage.Find("*", , , , , xlPrevious).Row
End Function

Bonjour à tous,

Merci pour vos réponses.

Dan, çà bug aussi comme çà.

image

Pijaku,

Merci pour votre code, mais çà fonctionne comme çà:

'determin. debut de liste grp C3
    If drnA > drnB Then fin = drnA Else fin = drnB 'derniere ligne maximale
        For i = 2 To fin
            If ws.Range("C2") = "Elèves en C3" Then
                debC = i
            End If
        Next i
1

Ah zut çà bug aussi

Cdt

Bonjour

Dans ce cas :

Set maligne =Range("C:C").Find("Élève en C3")

If maligne is nothing then MsgBox ("pas de correspondance") else derC=maligne.Row+1

@ bientôt

LouReeD

Bonjour LouReed,

image

Quand çà veut pas

Et Pijaku,

image
4test.xlsm (20.61 Ko)

Cdt

Dan, çà bug aussi comme çà.

Normal, je ne vous ai jamais dit de mettre "N°" à cet endroit.
Relisez ce que j'ai écrit

1- Adaptez un minimum les codes donnés (cf. Dan...)

2- Vous n'avez même pas modifié le "s" à la fin d'élève dans le code de Loureed...

3- pour mon code vous avez pris le soin de changer les noms des fonctions, mais vous n'avez pas mis leurs codes...

Je vous laisse découvrir ce qui fonctionne :

1
11test.xlsm (22.46 Ko)

Donc c'est ok pour ma proposition.

Bonsoir,

enfin j'ai pu télécharger le fichier et je comprend !

ceci :

Sub loureed()
Dim debC%
Set debC = Range("C:C").Find("Élèves en C3")
If debC Is Nothing Then MsgBox ("pas de correspondance") Else debC = debC.Row + 1
End Sub

est différent de ce que j'ai donné :

Sub loureed()
Set maligne =Range("C:C").Find("Élèves en C3")
If maligne is nothing then MsgBox ("pas de correspondance") else derC = maligne.Row+1
end sub

Vous avez fais un mélange des genres entre "%" et le RANGE !

@ bientôt

LouReeD

Bsoir,

Vous avez la critique facile.

LouReed, si je copie ta macro telle quelle, çà me donne pas de correspondance, et c'est pas le but.

Au final, c'est la formule de pijaku que j'ai pris vu que je peux avoir une cellule vide en col.A juste après le titre.

Bonne soirée.

je n'ai pas la critique facile, c'est juste que Elèves n'a pas d'accent... et au niveau critique je crois que je suis bien plus loin que certains ici non ?

Mon code fonctionne si la recherche est bonne, par contre je ne m'explique pas l'arrivée de cet accent car je n'en met pas d'habitude sur les majuscules...

Serait ce la correction orthographique du site ? Elèves... à priori non...

Il n'en reste pas moins que si j'utilise une variable "maligne" elle n'a pas a être modifiée par une autre qui s'appelle debC, car l'une est un objet Range alors que l'autre est un entier et quand vous écrivez debC.Row, forcément... Donc plutôt qu'une critique voyez dans ce que j'ai dit une affirmation : en VBA on ne mélange pas les genres ! un Integer est un Integer et ne sera pas (ou ne doit pas) être un Range !

@ bientôt

LouReeD

J'ai remarqué aussi pour Elèves, et maintenant çà me donne... rien. C'est déjà mieux, remarques... c'est ce que je me dis souvent quand j'ai l'impression de pas avancer avec mon appli.

4test.xlsm (22.68 Ko)
Rechercher des sujets similaires à "1ere ligne vide"