Définition de variables locales dans une formule

  • Initiateur de la discussion Initiateur de la discussion SkyCorp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

SkyCorp

Guest
Bonjour à tous,

Je cherche un moyen de définir des variables locales au sein même d'une formule, donc sans passer par une cellule intermédiaire (cachée ou non) ou par une macro.
Voici un exemple de ce que je cherche à réaliser :
SI(a:=Formule;f(a);g(a))
avec 'a' la variable locale, f et g étant des fonctions de a.

Cela est-il faisable ?
 
Re : Définition de variables locales dans une formule

Bonjour,

Il aurait peut-être mieux valu créer un nouveau message car la question n'a plus rien à voir avec le sujet initial, donc pas facile pour d'éventuelles recherches ultérieures.

En pièce jointe une proposition pour les trois étapes en une.

Vois si c'est exact (j'ai le point comme spérateur de décimales) et si cela te convient.

abcd
 

Pièces jointes

Re : Définition de variables locales dans une formule

D'accord, cela fonctionne également par formule nommée. Mais sachant que des personnes utilisant également mes fichiers Excel sans avoir trop de notions, j'aimerais pouvoir voir toute la formule dans la cellule.

Au moins grâce à vous, j'ai découvert les formules nommées, que je ne connaissais pas avant, et ça va pas mal me faire avancer sur d'autres fichiers Excel. Merci pour tout 🙂.

Mais si quelqu'un connait la solution à ce problème, ce serait idéal. N'y a-t-il pas moyen de définir des variables au sein même de la cellule ?
 
Re : Définition de variables locales dans une formule

Bonjour SkyCorp, salut abcd 🙂

Mon grain de sel pour le dernier problème avec cette formule en H6 :

Code:
=SI(ESTERR(1*GAUCHE(A6;2));"";1*GAUCHE(A6;2))

mais ce n'est pas parfait...

Fichier joint.

A+

Edit : j'avais mis une formule matricielle...
 

Pièces jointes

Dernière édition:
Re : Définition de variables locales dans une formule

Bonjour job75, et merci pour ta contribution.

Cependant, ça ne résout pas tous les problèmes, comme avec la ligne 5 avec les valeurs décimales.
Et mon but n'est pas d'avoir une formule qui marche (pour ça, il me suffit de faire des copier/coller des formules des colonnes B et C), mais de la réduire au maximum en utilisant des variables explicites (donc tout est visible en ne regardant que la cellule concernée). Et dans ce cas, je ne connais aucune technique 😕
 
Re : Définition de variables locales dans une formule

Re le fil, bonjour tbft, GCFRG, chris et job75, bonjour à toutes et à tous 🙂

Je dois être bouché ou complètement c..(censuré) car j'avoue ne plus rien y comprendre. abcd t'a déjà proposé des formules nommées, mais dans son dernier fichier, tu peux voir la formule entière dans la cellule.

Que veux-tu exactement 😕

J'avoue qu'à part nommer les cellules de la colonne Expected Lifetime, je ne vois vraiment pas quoi faire d'autre. Pour moi, je considère, sans plus d'explication de ta part, qu'abcd a solutionné ton problème dans son dernier fichier.

@+
 
Re : Définition de variables locales dans une formule

Désolé, mais je n'avais pas vu le dernier message d'abcd, et j'en profite d'ailleurs pour remercier abcd pour sa suggestion.

En fait, le titre du sujet est toujours d'actualité vu que je cherche encore à définir des variables dans une formule. Je suis d'accord que la formule d'abcd est tout de même mieux adapté que celle que j'avais en tête, mais souhaite savoir s'il y a un moyen d'intégrer des variables au sein d'une formule.

S'il n'y a aucun moyen, je m'en remettrai, mais il serait dommage de ne pas pouvoir en profiter
 
Re : Définition de variables locales dans une formule

Re,

Si tu veux définir une variable, il faut la ... définir !
Nommer cette variable est une méthode pour la définir , ... et je n'en vois pas d'autre.

D'autant plus que cela n'est pas possible en cours de saisie, car Excel ne peut prendre une chaine de texte en considération qu'après qu'elle ait été validée.

A mon avis, ce que tu demandes est la quadrature du cercle.

abcd
 
Re : Définition de variables locales dans une formule

Désolé, mais je n'ai pas tout compris.

A priori, Excel exécute chaque expression par priorité, par exemple la multiplication étant prioritaire à la somme.
Donc si une série de caractères du style ':=' pouvait permettre la définition d'une variable à un certain moment de l'évaluation de la formule, il devrait être possible de s'en resservir ultérieurement et toujours au sein de cette formule.

Par exemple dans le cas d'un test SI(a;b;c). Dans ce cas, 'a' est évalué avant 'b' ou 'c'. Donc si une variable peut être définie dans 'a', il pourrait être possible d'utiliser cette variable dans 'b' ou 'c'. Je me trompe peut-être mais cela me semble logique en tout cas.

Mais bon, je peux comprendre que ce n'est pas possible. Tu peux donc me confirmer que ma demande est impossible à effectuer sous Excel ?
 
Re : Définition de variables locales dans une formule

Re, bonjour à toutes et à tous 🙂

Re,

Si tu veux définir une variable, il faut la ... définir !
Nommer cette variable est une méthode pour la définir , ... et je n'en vois pas d'autre.

D'autant plus que cela n'est pas possible en cours de saisie, car Excel ne peut prendre une chaine de texte en considération qu'après qu'elle ait été validée.

A mon avis, ce que tu demandes est la quadrature du cercle.

abcd

Je crois, SkyCorp, que tu n'as pas bien lu le post d'abcd. C'est impossible en cours de saisie 😱

Tu devras te contenter de noms ou de formules nommées ou conserver (c'est amha la meilleure solution) ce que t'as proposé abcd.

@+
 
Re : Définition de variables locales dans une formule

Bonjour à tous Re p'tit essai vba

voyez ci çà peut convenir
pour le test les données s'incrive dans la colonne G
a adapter:

Code:
With Sheets("Tests")
Fin = .Range("a" & .Rows.Count).End(xlUp).Row
Déb = 4
For I = Déb To Fin
    If Not IsNumeric(Left(.Cells(I, 1), 1)) Then GoTo suite
    Tmp = Trim(.Cells(I, 1).Value)
        For j = 1 To Len(Tmp)
            Cherc = Mid(Tmp, j, Len(Tmp))
                If Left(Cherc, 1) = "y" Then
                Cherc2 = Left(Tmp, j - 2)
                Exit For
                End If
                Next j
                For K = 1 To Len(Cherc2)
                Sepa = Mid(Cherc2, K, Len(Cherc2))
                Sepa2 = Mid(Cherc2, K + 2, Len(Cherc2))
                If Left(Sepa, 1) = "-" And Left(Sepa2, 1) = "." Then
                Val = CDbl(Left(Cherc2, 1))
                .Cells(I, 7) = Val
                Exit For
                ElseIf Left(Mid(Cherc2, K + 2, Len(Cherc2)), 1) = "+" Then
                Val = CDbl(Left(Cherc2, 2))
                .Cells(I, 7) = Val
                Exit For
                 End If
                
                
                   If Left(Sepa, 1) = "." Then
                        Val = CDbl(Replace(Cherc2, ".", ","))
                        .Cells(I, 7).Value = CDbl(Val)
                        Exit For
                        ElseIf Left(Sepa, 1) = "-" Then 'And Left(Sepa, 3) = "." Then
                        Val = CDbl(Replace(Cherc2, "-", ","))
                        .Cells(I, 7).Value = CDbl(Val)
                        Exit For
                        ElseIf Left(Sepa, 1) = "_" Then
                        Val = CDbl(Replace(Cherc2, "_", ","))
                        .Cells(I, 7).Value = CDbl(Val)
                        Exit For
                    End If
                    If Len(Cherc2) = 1 Or Len(Cherc2) = 2 Then
                    Val = CDbl(Cherc2)
                    .Cells(I, 7).Value = CDbl(Val)
                    Exit For
                    End If
                Next K
                
       
suite:
    Next I
    .Range("G" & Déb, "G" & Fin).NumberFormat = "#,##0.0"
End With
End Sub

@+ Gilbert
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
270
Réponses
2
Affichages
380
Réponses
9
Affichages
569
Retour