OVH Cloud OVH Cloud

Cells() fonctionne-t-elle sur des cellules masquées ?

4 réponses
Avatar
Jean-Luc GARNIER
Bonjour,

J'utilise le code (simplissime) suivant pour d=E9tecter la=20
derni=E8re colonne non vide dans une ligne:
------------
' D=E9tection de la colonne de la derni=E8re cellule non vide
cp =3D Cells(i, "AH").Column
cd =3D Cells(i, "IV").Column

For j =3D cd To cp Step -1
If Cells(i, j).Text <> "" Then
col =3D Cells(i, j).Column
Exit For
End If
Next j
------------

Je cherche donc des colonnes IV =E0 AH (reverse), mais ce=20
code ne fonctionne pas si certaines colonnes sont masqu=E9es=20
(et qu'elles contiennent une valeur =E9videmment).

Est-ce un comportement normal ou y a-t-il une autre=20
m=E9thode pour r=E9aliser ce que je fais ?

Merci d'avance pour votre aide !

Jean-Luc

4 réponses

Avatar
AV
Plutôt qu'une boucle, essaye ça :
i = 1
MsgBox Evaluate("max(not(isblank(AH" & i & ":IV" & i & "))*column(AH" & i &
":IV" & i & "))")

AV
Avatar
BJ
Salut Jean - Luc
Avec ce que je comprends voici
col va renvoyer la derniere colonne utilisée
ajoute un for pour les lignes i
Bruno

i = numéroligne
col = Cells(i, 256).End(xlToLeft).Column

Jean-Luc GARNIER a écrit dans le
message : c2ed01c47a39$2d8ac450$
Bonjour,

J'utilise le code (simplissime) suivant pour détecter la
dernière colonne non vide dans une ligne:
------------
' Détection de la colonne de la dernière cellule non vide
cp = Cells(i, "AH").Column
cd = Cells(i, "IV").Column

For j = cd To cp Step -1
If Cells(i, j).Text <> "" Then
col = Cells(i, j).Column
Exit For
End If
Next j
------------

Je cherche donc des colonnes IV à AH (reverse), mais ce
code ne fonctionne pas si certaines colonnes sont masquées
(et qu'elles contiennent une valeur évidemment).

Est-ce un comportement normal ou y a-t-il une autre
méthode pour réaliser ce que je fais ?

Merci d'avance pour votre aide !

Jean-Luc
Avatar
Jean-Luc GARNIER
Désolé de n'avoir pas répondu plus tôt, j'ai un peu changé
de bug.. :-)

Nous avons trouvé une solution intermédiaire qui fait
intervenir IsEmpty(), fonction qui ne semble pas affectée
par l'état affichéé/cachée de la colonne.. En gros, c'est
la même formulation que toi, mais avec NOT(IsEmpty())..

Merci pour ton aide !

Jean-Luc

-----Message d'origine-----
Plutôt qu'une boucle, essaye ça :
i = 1
MsgBox Evaluate("max(not(isblank(AH" & i & ":IV" & i & "))
*column(AH" & i &

":IV" & i & "))")

AV


.



Avatar
AV
Nous avons trouvé une solution intermédiaire qui fait
intervenir IsEmpty(), fonction qui ne semble pas affectée
par l'état affichéé/cachée de la colonne..


Pas plus que ce que je t'ai proposé (que tu n'as apparemment pas testé) !

la même formulation que toi, mais avec NOT(IsEmpty())..


C'est vrai que NOT(IsEmpty est nettement plus court que not(isblank
;-)

Par ailleurs il me semble que ton "affaire" est assez confuse car tu voulais
initialement une solution macro et maintenant, dans ton fil le plus récent, tu
signales une référence circulaire ce qui n'a rien à voir avec une solution macro
Bon...enfin...tu fais comme tu veux et quand tu veux...

AV