OVH Cloud OVH Cloud

Formule tronquée par l'enregistreur...?

3 réponses
Avatar
Domi
Bonsoir à tous,

J'ai fais la formule (un peu lourde mais qui marche très bien) suivante :
=SI(ESTNA(RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));"";SI(saisieN
ivIsol1<=24;SI(ET(saisiepuissance1=630;saisieucc1=6);INDEX(TABLEAUX!C4:C18;9
;1);RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));SI(ET(saisiepuissan
ce1=630;saisieucc1=6);INDEX(TABLEAUX!G4:G18;9;1);RECHERCHEV(saisiepuissance1
;tab_pertes24Sup;6;FAUX))))

Lorsque je l'enregistre avec l'enregistreur de macro, j'obtiens
systematiquement une formule éronnée (pas toujours la même !) de ce genre :
Pourquoi ? Comment y remédier si cela est possible ?

Merci
Domi

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))1""""
saisieNivIsol1<=24
IF(AND(saisiepuissance1=630,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1
),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))?AND(saisiepuissance1=63
0,saisieucc1=6)"

ou

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))""""
saisieNivIsol1<=24
IF(AND(saisiepuissance1=630,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1
),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))
AND(saisiepuissance1=630,saisieucc1=6)"

3 réponses

Avatar
michdenis
Bonsoir Dimi,

Si tu remplaces la ligne de code générée par l'enregistreur de macro par quelque chose ressemblant à ceci :

Dim A As String

A = Range("A1").Formula

La variable A devrait contenir le texte de la fonction écrite en A1. Non ?


P.S. Tu ne dois pas oublier que le nombre de caractères possibles dans une formule lorsqu'on l'a saisie directement dans
une cellule est de 256. Si tu saisis ta formule dans la barre de formule, tu auras droit à 1024 caractères. La barrière
du 256 caractères semble être le facteur qui limite l'enregistreur macro.


Salutations!




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

J'ai fais la formule (un peu lourde mais qui marche très bien) suivante :
=SI(ESTNA(RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));"";SI(saisieN
ivIsol1<$;SI(ET(saisiepuissance1c0;saisieucc1=6);INDEX(TABLEAUX!C4:C18;9
;1);RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));SI(ET(saisiepuissan
ce1c0;saisieucc1=6);INDEX(TABLEAUX!G4:G18;9;1);RECHERCHEV(saisiepuissance1
;tab_pertes24Sup;6;FAUX))))

Lorsque je l'enregistre avec l'enregistreur de macro, j'obtiens
systematiquement une formule éronnée (pas toujours la même !) de ce genre :
Pourquoi ? Comment y remédier si cela est possible ?

Merci
Domi

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))1""""
saisieNivIsol1<$
IF(AND(saisiepuissance1c0,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1
),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))?AND(saisiepuissance1c
0,saisieucc1=6)"

ou

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))""""
saisieNivIsol1<$
IF(AND(saisiepuissance1c0,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1
),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))
AND(saisiepuissance1c0,saisieucc1=6)"
Avatar
Domi
Et oui bien sûr, 256 caractères....
Je ne comprends pas bien l'idée de la variable...
Mon objectif c'est de copier cette formule dans une plage via une macro
quelque chose du genre :
With Range.....
.FormulaR1C1 = "ma grosse formule..."
.Value = .Value
End With
Merci
Domi

"michdenis" a écrit dans le message de
news:
Bonsoir Dimi,

Si tu remplaces la ligne de code générée par l'enregistreur de macro par
quelque chose ressemblant à ceci :


Dim A As String

A = Range("A1").Formula

La variable A devrait contenir le texte de la fonction écrite en A1. Non ?


P.S. Tu ne dois pas oublier que le nombre de caractères possibles dans une
formule lorsqu'on l'a saisie directement dans

une cellule est de 256. Si tu saisis ta formule dans la barre de formule,
tu auras droit à 1024 caractères. La barrière

du 256 caractères semble être le facteur qui limite l'enregistreur macro.


Salutations!




"Domi" a écrit dans le message de
news:%

Bonsoir à tous,

J'ai fais la formule (un peu lourde mais qui marche très bien) suivante :

=SI(ESTNA(RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));"";SI(saisieN


ivIsol1<$;SI(ET(saisiepuissance1c0;saisieucc1=6);INDEX(TABLEAUX!C4:C18;9


;1);RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));SI(ET(saisiepuissan


ce1c0;saisieucc1=6);INDEX(TABLEAUX!G4:G18;9;1);RECHERCHEV(saisiepuissance1

;tab_pertes24Sup;6;FAUX))))

Lorsque je l'enregistre avec l'enregistreur de macro, j'obtiens
systematiquement une formule éronnée (pas toujours la même !) de ce genre
:

Pourquoi ? Comment y remédier si cela est possible ?

Merci
Domi

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))1""""
saisieNivIsol1<$

IF(AND(saisiepuissance1c0,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1

),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))?AND(saisiepuissance1 63
0,saisieucc1=6)"

ou

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))""""
saisieNivIsol1<$

IF(AND(saisiepuissance1c0,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1

),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))
AND(saisiepuissance1c0,saisieucc1=6)"





Avatar
Denis Michon
Bonsoir Domi,

Si tu utilises la propriété "Formula" ou "formulalocal" de l'objet "Range", tu ne devrais pas rencontrer aucun problème
tant et aussi longtemps que le texte de la formule ne dépasse pas 1024 caractères.


Salutations!


P.S. L'idée de la variable n'était là que pour illustrer le fait que tu pouvais très bien récupérer une formule très
longue ( mois de 1024 caractères) inscrite dans une cellule d'une feuille de calcul en VBA ... la variable te permet de
calculer la longueur de la chaîne de caractères de la formule en utilisant ceci :

Msgbox Len(a) pour faire référence à l'exemple de mon message précédent.





"Domi" a écrit dans le message de news:
Et oui bien sûr, 256 caractères....
Je ne comprends pas bien l'idée de la variable...
Mon objectif c'est de copier cette formule dans une plage via une macro
quelque chose du genre :
With Range.....
.FormulaR1C1 = "ma grosse formule..."
.Value = .Value
End With
Merci
Domi

"michdenis" a écrit dans le message de
news:
Bonsoir Dimi,

Si tu remplaces la ligne de code générée par l'enregistreur de macro par
quelque chose ressemblant à ceci :


Dim A As String

A = Range("A1").Formula

La variable A devrait contenir le texte de la fonction écrite en A1. Non ?


P.S. Tu ne dois pas oublier que le nombre de caractères possibles dans une
formule lorsqu'on l'a saisie directement dans

une cellule est de 256. Si tu saisis ta formule dans la barre de formule,
tu auras droit à 1024 caractères. La barrière

du 256 caractères semble être le facteur qui limite l'enregistreur macro.


Salutations!




"Domi" a écrit dans le message de
news:%

Bonsoir à tous,

J'ai fais la formule (un peu lourde mais qui marche très bien) suivante :

=SI(ESTNA(RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));"";SI(saisieN


ivIsol1<$;SI(ET(saisiepuissance1c0;saisieucc1=6);INDEX(TABLEAUX!C4:C18;9


;1);RECHERCHEV(saisiepuissance1;tab_pertes24Sup;2;FAUX));SI(ET(saisiepuissan


ce1c0;saisieucc1=6);INDEX(TABLEAUX!G4:G18;9;1);RECHERCHEV(saisiepuissance1

;tab_pertes24Sup;6;FAUX))))

Lorsque je l'enregistre avec l'enregistreur de macro, j'obtiens
systematiquement une formule éronnée (pas toujours la même !) de ce genre
:

Pourquoi ? Comment y remédier si cela est possible ?

Merci
Domi

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))1""""
saisieNivIsol1<$

IF(AND(saisiepuissance1c0,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1

),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))?AND(saisiepuissance1 63
0,saisieucc1=6)"

ou

"=ISNA(VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))""""
saisieNivIsol1<$

IF(AND(saisiepuissance1c0,saisieucc1=6),INDEX(TABLEAUX!R[-70]C:R[-56]C,9,1

),VLOOKUP(saisiepuissance1,tab_pertes24Sup,2,FALSE))
AND(saisiepuissance1c0,saisieucc1=6)"