XL pour MAC comptage de lignes et colonnes

  • Initiateur de la discussion Initiateur de la discussion Delorme
  • Date de début Date de début
  • Mots-clés Mots-clés
    vba

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 !

Delorme

XLDnaute Occasionnel
Bonjour à tous

je fais une macro vba dans laquelle je veux tester mes numéros de dernieres lignes et colonnes par msgbox

je vous joins le fichier et macro
Sub boucles()

Dim ligne As Integer: Dim colonne As Integer
Dim der_ligne As Integer: Dim der_colonne As Integer

der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row
der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column

MsgBox der_ligne & " " & der_colonne
For ligne = 1 To der_ligne
For colonne = 1 To der_colonne
If (Cells(ligne, colonne).Value <> " ") Then
MsgBox ligne & " " & colonne
Exit Sub

End If
Next colonne

Next ligne

End Sub



j'obtiens 12 et 7 alors que mon fichier est de 21 et 10

ou est l'erreur?
merci
michel
 

Pièces jointes

Bonjour,

Commence par forcer Excel a redéfinir la plage des cellules utilisées avec un ActiveSheet.UsedRange

j'ai pas Excel sur ce poste (le mien est en cours de reformatage (lol) mais la fonction UsedRange te renvoie un Range ... avec les propriétés .rows.count et .columns.count tu devrait avoir ton info.

A+
 
Bonjour Delorme,
Il y a plusieurs erreurs :
1- La macro étant dans Feuil1 elle s'exécute sur Feuil1, et donc le résultat est faux.
2- Avec des For Next comme ça, il commence par cell(1,1) donc il trouvera la première et non la dernière.
3- Une cellule vide c'est "" et non " "
En PJ un essai avec la macro dans un module :
VB:
Sub boucles()
Dim ligne As Integer: Dim colonne As Integer
Dim der_ligne As Integer: Dim der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    For ligne = der_ligne To 1 Step -1
        For colonne = der_colonne To 1 Step -1
            If .Cells(ligne, colonne) <> "" Then
                MsgBox ligne & " " & colonne
                Exit Sub
            End If
        Next colonne
    Next ligne
End With
End Sub
Ensuite, si der_ligne et der_colonne vous donne les dernières lignes et colonnes utilisées, pourquoi faire ensuite un test ?
Pourquoi ne pas faire simplement ( bouton 2 de la PJ ):
Code:
Sub boucles2()
Dim der_ligne As Integer, der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    MsgBox der_ligne & " " & der_colonne
End With
End Sub

Deux conseils :
1- Pour le code sur un post utilisez les balises ( </> à droite de l'icone GIF ) c'est plus lisible.
2- Pour le code, indentez. C'est plus clair et permet de mieux comprendre la structure, surtout pour quelqu'un qui n'est pas le rédacteur.
 

Pièces jointes

Bonjour Delorme,
Il y a plusieurs erreurs :
1- La macro étant dans Feuil1 elle s'exécute sur Feuil1, et donc le résultat est faux.
2- Avec des For Next comme ça, il commence par cell(1,1) donc il trouvera la première et non la dernière.
3- Une cellule vide c'est "" et non " "
En PJ un essai avec la macro dans un module :
VB:
Sub boucles()
Dim ligne As Integer: Dim colonne As Integer
Dim der_ligne As Integer: Dim der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    For ligne = der_ligne To 1 Step -1
        For colonne = der_colonne To 1 Step -1
            If .Cells(ligne, colonne) <> "" Then
                MsgBox ligne & " " & colonne
                Exit Sub
            End If
        Next colonne
    Next ligne
End With
End Sub
Ensuite, si der_ligne et der_colonne vous donne les dernières lignes et colonnes utilisées, pourquoi faire ensuite un test ?
Pourquoi ne pas faire simplement ( bouton 2 de la PJ ):
Code:
Sub boucles2()
Dim der_ligne As Integer, der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    MsgBox der_ligne & " " & der_colonne
End With
End Sub

Deux conseils :
1- Pour le code sur un post utilisez les balises ( </> à droite de l'icone GIF ) c'est plus lisible.
2- Pour le code, indentez. C'est plus clair et permet de mieux comprendre la structure, surtout pour quelqu'un qui n'est pas le rédacteur.
 
- 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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Réponses
40
Affichages
2 K
Retour