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
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.
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.
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.
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.
Et Michel en passant ... si l'une des réponses vous a permit d'avancer => pensez à marquer le post comme solution : colonne grise à droite du post AVEC la solution, cochez "marquer comme solution" (case à cocher ronde)
A+