OVH Cloud OVH Cloud

Derniere cellule comportant un résultat !

4 réponses
Avatar
Dominique33
Bonsoir à tous,

Si j'utilise la méthode "Range("b42").End(xlUp).Offset(0, 0).Activate" sur
une simple colonne avec des chiffres, celle-ci fonctionne et me donne la
dernière cellule non vide (en réglant l'offset ).
Mon soucis vient du fait que dans un nouveau projet, mes cellules
contiennent des formules.
Avec la fonction "SI" elles affichent ou pas un résultat. Du coup, la
méthode "Range" ne fonctionne plus.

Auriez vous une solution ?
Cordialement
Dominique

4 réponses

Avatar
michdenis
Bonjour Dominique33,

Tu peux utiliser cette syntaxe :

'Sélectionne la dernère cellule même si cette dernière
'affiche "" comme résultat d'une formule

Range("B" & Range("A:A").Find("*", , xlFormulas, _
, , xlPrevious).Row).Offset(0, 0).Select

****************************
'Sélectionne la dernère cellule affichant un résultat de la colonne B

Range("B" & Range("A:A").Find("*", , xlValues, _
, , xlPrevious).Row).Offset(0, 0).Select

En fait c'est la différence entre XlValues et XlFormulas dans la méthode Find.



Salutations!



"Dominique33" a écrit dans le message de news:
Bonsoir à tous,

Si j'utilise la méthode "Range("b42").End(xlUp).Offset(0, 0).Activate" sur
une simple colonne avec des chiffres, celle-ci fonctionne et me donne la
dernière cellule non vide (en réglant l'offset ).
Mon soucis vient du fait que dans un nouveau projet, mes cellules
contiennent des formules.
Avec la fonction "SI" elles affichent ou pas un résultat. Du coup, la
méthode "Range" ne fonctionne plus.

Auriez vous une solution ?
Cordialement
Dominique
Avatar
Dominique33
Bonjour et merci de ta réponse.
Un petit probléme:
Si ma plage de cellules n'affiche pas de résultat, j'utilise cette syntaxe,
(dérivée de la tienne qui me renvoi un message d'erreur):
Range("b23:B42").Find("*", , xlFormulas, , xlByColumns).Offset(0, 0).Select
Si ma plage de cellule affiche un résultat, j'utlise cette syntaxe, (dérivée
de la tienne qui me renvoi un message d'erreur):
Range("b24:B42").Find("*", , xlValues, , , xlPrevious).Offset(1, 0).Select
Avant de me lancer dans une routine avec IF, ne peux t'on pas intégrer les
deux syntaxes en une?

Cordialement
Dominique

"michdenis" a écrit dans le message de
news:
Bonjour Dominique33,

Tu peux utiliser cette syntaxe :

'Sélectionne la dernère cellule même si cette dernière
'affiche "" comme résultat d'une formule

Range("B" & Range("A:A").Find("*", , xlFormulas, _
, , xlPrevious).Row).Offset(0, 0).Select

****************************
'Sélectionne la dernère cellule affichant un résultat de la colonne B

Range("B" & Range("A:A").Find("*", , xlValues, _
, , xlPrevious).Row).Offset(0, 0).Select

En fait c'est la différence entre XlValues et XlFormulas dans la méthode
Find.




Salutations!



"Dominique33" a écrit dans le message de news:


Bonsoir à tous,

Si j'utilise la méthode "Range("b42").End(xlUp).Offset(0, 0).Activate" sur
une simple colonne avec des chiffres, celle-ci fonctionne et me donne la
dernière cellule non vide (en réglant l'offset ).
Mon soucis vient du fait que dans un nouveau projet, mes cellules
contiennent des formules.
Avec la fonction "SI" elles affichent ou pas un résultat. Du coup, la
méthode "Range" ne fonctionne plus.

Auriez vous une solution ?
Cordialement
Dominique





Avatar
michdenis
Bonjour Dominique,

La méthode "Find" de l'objet "Range" génère une erreur lorsque cette dernère ne trouve pas.

Tu pourrais peut être contourné le tout de cette manière :


Dim A As Long

On Error Resume Next
A = Range("B:B").Find("*", , xlValues, _
, , xlPrevious).Row
On Error GoTo 0
If A < 42 Then A = 42
Range("B" & A).Offset(0, 0).Select


Salutations!




"Dominique33" a écrit dans le message de news:
Bonjour et merci de ta réponse.
Un petit probléme:
Si ma plage de cellules n'affiche pas de résultat, j'utilise cette syntaxe,
(dérivée de la tienne qui me renvoi un message d'erreur):
Range("b23:B42").Find("*", , xlFormulas, , xlByColumns).Offset(0, 0).Select
Si ma plage de cellule affiche un résultat, j'utlise cette syntaxe, (dérivée
de la tienne qui me renvoi un message d'erreur):
Range("b24:B42").Find("*", , xlValues, , , xlPrevious).Offset(1, 0).Select
Avant de me lancer dans une routine avec IF, ne peux t'on pas intégrer les
deux syntaxes en une?

Cordialement
Dominique

"michdenis" a écrit dans le message de
news:
Bonjour Dominique33,

Tu peux utiliser cette syntaxe :

'Sélectionne la dernère cellule même si cette dernière
'affiche "" comme résultat d'une formule

Range("B" & Range("A:A").Find("*", , xlFormulas, _
, , xlPrevious).Row).Offset(0, 0).Select

****************************
'Sélectionne la dernère cellule affichant un résultat de la colonne B

Range("B" & Range("A:A").Find("*", , xlValues, _
, , xlPrevious).Row).Offset(0, 0).Select

En fait c'est la différence entre XlValues et XlFormulas dans la méthode
Find.




Salutations!



"Dominique33" a écrit dans le message de news:


Bonsoir à tous,

Si j'utilise la méthode "Range("b42").End(xlUp).Offset(0, 0).Activate" sur
une simple colonne avec des chiffres, celle-ci fonctionne et me donne la
dernière cellule non vide (en réglant l'offset ).
Mon soucis vient du fait que dans un nouveau projet, mes cellules
contiennent des formules.
Avec la fonction "SI" elles affichent ou pas un résultat. Du coup, la
méthode "Range" ne fonctionne plus.

Auriez vous une solution ?
Cordialement
Dominique





Avatar
Dominique33
Chapeau bas M. Michdenis

Grace à cette nouvelle synthaxe, je vient de débloquer ma situation.

Merci et à bientôt sur le forum.

Cordialement
Dominique



Bonjour Dominique,

La méthode "Find" de l'objet "Range" génère une erreur lorsque cett e dernère ne trouve pas.

Tu pourrais peut être contourné le tout de cette manière :


Dim A As Long

On Error Resume Next
A = Range("B:B").Find("*", , xlValues, _
, , xlPrevious).Row
On Error GoTo 0
If A < 42 Then A = 42
Range("B" & A).Offset(0, 0).Select


Salutations!




"Dominique33" a écrit dans le message de news:
Bonjour et merci de ta réponse.
Un petit probléme:
Si ma plage de cellules n'affiche pas de résultat, j'utilise cette synt axe,
(dérivée de la tienne qui me renvoi un message d'erreur):
Range("b23:B42").Find("*", , xlFormulas, , xlByColumns).Offset(0, 0).Sele ct
Si ma plage de cellule affiche un résultat, j'utlise cette syntaxe, (d érivée
de la tienne qui me renvoi un message d'erreur):
Range("b24:B42").Find("*", , xlValues, , , xlPrevious).Offset(1, 0).Select
Avant de me lancer dans une routine avec IF, ne peux t'on pas intégrer les
deux syntaxes en une?

Cordialement
Dominique

"michdenis" a écrit dans le message de
news:
Bonjour Dominique33,

Tu peux utiliser cette syntaxe :

'Sélectionne la dernère cellule même si cette dernière
'affiche "" comme résultat d'une formule

Range("B" & Range("A:A").Find("*", , xlFormulas, _
, , xlPrevious).Row).Offset(0, 0).Select

****************************
'Sélectionne la dernère cellule affichant un résultat de la colon ne B

Range("B" & Range("A:A").Find("*", , xlValues, _
, , xlPrevious).Row).Offset(0, 0).Select

En fait c'est la différence entre XlValues et XlFormulas dans la mé thode
Find.




Salutations!



"Dominique33" a écrit dans le message de news:


Bonsoir à tous,

Si j'utilise la méthode "Range("b42").End(xlUp).Offset(0, 0).Activate " sur
une simple colonne avec des chiffres, celle-ci fonctionne et me donne la
dernière cellule non vide (en réglant l'offset ).
Mon soucis vient du fait que dans un nouveau projet, mes cellules
contiennent des formules.
Avec la fonction "SI" elles affichent ou pas un résultat. Du coup, la
méthode "Range" ne fonctionne plus.

Auriez vous une solution ?
Cordialement
Dominique