Résultat end(xldown).cells.count Incomprehensible

Bonjour,

C'est mon tout premier post je vais essayer de faire au mieux pour être clair

J'ai la macro suivante qui fonctionne très bien et qui me renvoi la bonne valeur soit 203.

Sub Macro3()

Sheets("DATA").Select

DerLigne = Range("M1", Selection.End(xlDown)).Cells.Count

MsgBox DerLigne

End Sub

Seulement lorsque je met le code suivant dans ma macro il me renvoi la valeur 60.

J'ai donc vérifier toute ma macro toute mes variable, la colonne en question juste avant l'éxécution du code.

la feuille n'est pas caché, il n'y a pas d'autres variables du même nom.

Et il n'y a rien de notable en ligne 60 sur la feuille DATA et sur les autres feuilles.

Je ne comprends pas d'où peut venir cette valeur, il y a surement un autre moyen d'obtenir la bonne valeur mais j'aimerais comprendre pourquoi cette valeur ressort.

Sheets("DATA").Select

DerLigne = Range("M1", Selection.End(xlDown)).Cells.Count

MsgBox DerLigne

Voici la macro, elle est appelée depuis une autre macro.

Sub test_enregistrement(ByVal fournisseur As String, ByVal file As String)

Dim annee As Integer
Dim chemin As String
Dim derligne As Integer

annee = Year(Sheets("TRAME TRAVAIL").Range("c2").Value)
chemin = "P:\Achats\TARIF\TARIF " & annee & "\"

Dim nomFichier As String, extension As String
nomFichier = "TRAME TRAVAIL v1.1 " & fournisseur & " " & Format(Sheets("TRAME TRAVAIL").Range("c2").Value, "dd mm yyyy")
extension = ".xlsm"

If annee = 2023 Then

If Not MsgBox("souhaitez vous enregister ce tarif dans TARIF 2024 ?", vbYesNo, "Enregistrer Tarif 2024 ?") = vbYes Then

MsgBox "VEUILLEZ ENREGISTRER LA TRAME SANS MODIFIER LE NOM"

Application.Dialogs(xlDialogSaveAs).Show nomFichier & extension

Exit Sub
Else

chemin = "P:\Achats\TARIF\TARIF " & 2024 & "\"

End If
End If

If file = "dossier non créé" Then

recup_File:

file = InputBox("Nous ne trouvons pas le dossier du fournisseur, merci de préciser la File :" & vbCrLf & vbCrLf & "BASE 1" & vbCrLf & "BASE 2" & vbCrLf & "BOF" & vbCrLf & "SURGELES" & vbCrLf & "SNACKING" & vbCrLf & "BOISSONS CONFISERIE" & vbCrLf & "NON ALIMENTAIRE", "Nom de la File")

If file = "BOF" Or file = "BASE 1" Or file = "BASE 2" Or file = "SNACKING" Or file = "BOISSONS CONFISERIE" Or file = "SURGELES" Or file = "NON ALIMENTAIRE" Then
Else
MsgBox "File incorrect"
GoTo recup_File
End If

Sheets("DATA").Select

derligne = Range("M1", Selection.End(xlDown)).Cells.Count
MsgBox derligne

Sheets("DATA").Range("M" & derligne + 1).Value = fournisseur
Sheets("DATA").Range("N" & derligne + 1).Value = file

If Dir(chemin & file & "\" & fournisseur) = "" Then
MkDir chemin & file & "\" & fournisseur

End If
End If

fichier = chemin & file & "\" & fournisseur & "\" & nomFichier & ".xlsm"

ActiveWorkbook.SaveAs Filename:=fichier

MsgBox ("le fichier est enregistrer dans " & chemin & file & "\" & fournisseur)

End Sub

Salut,

Alambiqué cette formule pour une dernière ligne.

Range("A1", Selection.End(xlDown)).Cells.Count va s’arrêter à la première cellule vide, qui ne sera pas forcément la dernière cellule de la colonne.

Tu dois utiliser xlUp ou mieux un tableau structuré

Merci jean-Paul pour ta réponse

Je suis preneur d'autres solutions , je dois avouer que j'ai suivi l'enregistreur de macro pour cette ligne

J'avais bien vérifier si il y avait des cellules vide mais il n'y en a pas.

Encore plus étonnant lorsque je change le ".Cells" par ".Rows" cela me renvoi la valeur 12...

Range("A1", Selection.End(xlDown)).Cells.Count => Renvoi 60  
Range("A1", Selection.End(xlDown)).Rows.Count => Renvoi 12

Alors qu'en testant ces deux lignes sur une macro toute simple elles me revoient bien la valeur 203.

Ca dépend de la cellule active et nulle part je ne vois de sélection de cellule. Pour trouver la denière cellule remplie de la colonne A, utilise :

derlig = Cells(Rows.Count, 1).End(xlUp).Row

Daniel

Merci Daniel

oui effectivement c'était bien du a une autre cellule sélectionnée en I12 qui vient d'une autre macro en amont.

le code Range("M1", Selection.End(xlDown)).Cells.Count

doit renvoyer le nombre de cellule du tableau M1:I12 soit 60

Suffit de mettre un Range("M1").Select avant et le compte est bon.

Merci beaucoup !!!

Rechercher des sujets similaires à "resultat end xldown count incomprehensible"