OVH Cloud OVH Cloud

Recherche de la dernière colonne occupée..

13 réponses
Avatar
Jean-Luc GARNIER
Bonjour,

Je cherche =E0 identifier la derni=E8re cellule occup=E9e sur=20
une ligne. Le code est assez simple et fait appel =E0 un=20
banal : Cells(i,j) <> "".

Je viens de d=E9couvrir qu'il ne trouve rien si la colonne=20
en question est masqu=E9e ! Pourtant, la boucle est bien=20
ex=E9cut=E9e, mais lorsqu'il arrive sur la cellule non vide,=20
le test if (Cells(i,j) <> "") ne d=E9clenche pas !

N'est-ce pas un bug d'Excel ?

Merci d'avance pour votre aide !

Jean-Luc

10 réponses

1 2
Avatar
Michel Gaboly
Bonjour Jean-Luc,

Pas de problème chez moi avec ce code :

Sub DerCellLigne()
Dim i As Integer, MaxCol As Integer
With ActiveCell
For i = 0 To ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 2
If Not IsEmpty(.Offset(0, i)) Then
MaxCol = i + 1
End If
Next i
End With
MsgBox MaxCol
End Sub


Tu peux également obtenir le résultat sans VBA :

pour la ligne 16 :

=MAX(NON(ESTVIDE(16:16)) * COLONNE(16:16))

à valider en matricielle

ou mieux encore, en passant par une indirection et
en mettant le numéro de ligne en A1 :

=MAX(NON(ESTVIDE(INDIRECT(A1 & ":" & A1))) * COLONNE(INDIRECT(A1 & ":" & A1)))

à valider également en matricielle, bien sûr.



Bonjour,

Je cherche à identifier la dernière cellule occupée sur
une ligne. Le code est assez simple et fait appel à un
banal : Cells(i,j) <> "".

Je viens de découvrir qu'il ne trouve rien si la colonne
en question est masquée ! Pourtant, la boucle est bien
exécutée, mais lorsqu'il arrive sur la cellule non vide,
le test if (Cells(i,j) <> "") ne déclenche pas !

N'est-ce pas un bug d'Excel ?

Merci d'avance pour votre aide !

Jean-Luc


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
michdenis
Bonjour Jean-Luc,

Il y a aussi ceci :

'--------------------------
Sub DerniereColonne()
Dim B As Integer
With Worksheets("Feuil1")
B = .Cells.Find("*", , LookIn:=xlFormulas, _
searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With
Msgbox B
End Sub
'--------------------------


Salutations!



"Jean-Luc GARNIER" a écrit dans le message de
news:292501c47df6$73f5c550$
Bonjour,

Je cherche à identifier la dernière cellule occupée sur
une ligne. Le code est assez simple et fait appel à un
banal : Cells(i,j) <> "".

Je viens de découvrir qu'il ne trouve rien si la colonne
en question est masquée ! Pourtant, la boucle est bien
exécutée, mais lorsqu'il arrive sur la cellule non vide,
le test if (Cells(i,j) <> "") ne déclenche pas !

N'est-ce pas un bug d'Excel ?

Merci d'avance pour votre aide !

Jean-Luc
Avatar
AV
T'as un bon point Denis car je vois que tu n'as oublié aucun des arguments de
find !
;-)
AV
Avatar
michdenis
je vois que tu n'as oublié aucun des arguments de find !


Enfin, ceux qui étaient essentielles !

Merci AV.

;-)


"AV" a écrit dans le message de news:eetzZ$
T'as un bon point Denis car je vois que tu n'as oublié aucun des arguments de
find !
;-)
AV

Avatar
AV
Enfin, ceux qui étaient essentielles !


Tu aurais pu faire un petit effort de concision et...d'absconcité :
B = Cells.Find("*", , 1, , 2, 2).Column

;-)
AV

Avatar
michdenis
Bonjour AV,

Tu aurais pu faire un petit effort de concision et...d'absconcité :
B = Cells.Find("*", , 1, , 2, 2).Column


Peut être ... mais je ne voudrais pas devenir membre d'un club très sélect ... "les éternels incompris !"

;-))


Salutations!

P.S. absconcité ou abscondité ....Il ne faudrait pas que tu en "ajoutes involontairement" à ton statut d'incompris !

;-)



"AV" a écrit dans le message de news:%23V%
Enfin, ceux qui étaient essentielles !


Tu aurais pu faire un petit effort de concision et...d'absconcité :
B = Cells.Find("*", , 1, , 2, 2).Column

;-)
AV

Avatar
Daniel.M
Félicitations michel/denis. :-)

En effet, ça commence par mettre les nombres au lieu des constantes dans Find et
ça se termine avec End(3) !

Salutations amicales,

Daniel M.


"michdenis" wrote in message
news:
Bonjour AV,

Tu aurais pu faire un petit effort de concision et...d'absconcité :
B = Cells.Find("*", , 1, , 2, 2).Column


Peut être ... mais je ne voudrais pas devenir membre d'un club très sélect ...
"les éternels incompris !"


;-))


Salutations!

P.S. absconcité ou abscondité ....Il ne faudrait pas que tu en "ajoutes
involontairement" à ton statut d'incompris !


;-)



"AV" a écrit dans le message de
news:%23V%

Enfin, ceux qui étaient essentielles !


Tu aurais pu faire un petit effort de concision et...d'absconcité :
B = Cells.Find("*", , 1, , 2, 2).Column

;-)
AV






Avatar
AV
Pffff.....
Si tout le monde comprend tout tout de suite à quoi ça sert ?

RePffff
pour la "solidarité" d'Outre-Atlantique !

AV
Avatar
Jean-Luc GARNIER
Merci beaucoup !

La syntaxe If Not IsEmpty(...) fonctionne très bien mais
je n'ai 1) pas compris et 2) pas réussi à faire
fonctionner l'autre proposition (que j'aurais pourtant
préférée) =MAX(NON(ESTVIDE(16:16)) * COLONNE(16:16)) !

Es tu sûr de cette formule, car j'obtiens un 'référence
circulaire error' !..

Merci de ton aide !

Jean-Luc

-----Message d'origine-----
Bonjour Jean-Luc,

Pas de problème chez moi avec ce code :

Sub DerCellLigne()
Dim i As Integer, MaxCol As Integer
With ActiveCell
For i = 0 To
ActiveSheet.UsedRange.Columns.Count +

ActiveSheet.UsedRange.Column - 2
If Not IsEmpty(.Offset(0, i)) Then
MaxCol = i + 1
End If
Next i
End With
MsgBox MaxCol
End Sub


Tu peux également obtenir le résultat sans VBA :

pour la ligne 16 :

=MAX(NON(ESTVIDE(16:16)) * COLONNE(16:16))

à valider en matricielle

ou mieux encore, en passant par une indirection et
en mettant le numéro de ligne en A1 :

=MAX(NON(ESTVIDE(INDIRECT(A1 & ":" & A1))) * COLONNE
(INDIRECT(A1 & ":" & A1)))


à valider également en matricielle, bien sûr.



Bonjour,

Je cherche à identifier la dernière cellule occupée sur
une ligne. Le code est assez simple et fait appel à un
banal : Cells(i,j) <> "".

Je viens de découvrir qu'il ne trouve rien si la colonne
en question est masquée ! Pourtant, la boucle est bien
exécutée, mais lorsqu'il arrive sur la cellule non vide,
le test if (Cells(i,j) <> "") ne déclenche pas !

N'est-ce pas un bug d'Excel ?

Merci d'avance pour votre aide !

Jean-Luc


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




Avatar
AV
Tu as déjà posé une question similaire ("Recherche de la dernière colonne
occupée") le 04/08/2004 !
Il y a des réponses qui attendent ton "opinion" !

AV
1 2