Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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,

Peux-tu donner un exemple concret en pièce jointe, avec les données de départ et le résultat à obtenir ?
Ce sera plus facile pour essayer de t'aider car j'ai difficile de comprendre ce que tu souhaites réaliser.

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

J'ai glissé un rapide exemple en pièce jointe.

En colonne D, j'ai une formule que je souhaiterai simplifié en quelque chose du style :
=SI(ESTNUM(A2+B2):=a;a;"")
avec a la variable locale, pour éviter à recopier la formule ESTNUM(A2+B2)

J'espère que ça t'aide à comprendre mon problème
 

Pièces jointes

Re : Définition de variables locales dans une formule

Re,

Je n'ai toujours pas compris.
Qu'entends-tu par "variable locale" ?
Tu donnes quatre lignes avec quatre exemples identiques, que veux-tu comme résultat ?
Donne quelques autres cas de figure, avec leurs résultats souhaités.

=ESTNUM(A2+B2) te renverra toujours soit VRAI, soit FAUX, donc pas besoin de SI ni de répétition ni de "".

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

Bonjour SkyCorp, abcd, et le fil

Bonne question SkyCorp... mais malheureusement je n'ai pas la solution...

Trop souvent, on a besoin d'écrire deux ou trois fois la même formule inclue dans une autre formule, du style :
SI(ESTNA(XXXXXXXXXXXXX);"";XXXXXXXXXXX), avec XXXXXXXXXX des fois parfois très long.
au lieu de plus simplement
SIIII(a=XXXXXXXXXXX;ESTNA(a);"";a)

Ca ressemble trop à de la programmation : a reçoit telle valeur, et après, à la place d'écrire la formule qui donne cette valeur, on écrit a.

Si quelqu'un a une solution, ça serait vraiment pratique...

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

Re, salut Cisco,

Toujours pas certain d'avoir compris, mais vois la pièce jointe.

La formule ESTNUM(A2+B2) a été nommée (menu Insertion / Nom / Définir)

abcd
 

Pièces jointes

Re : Définition de variables locales dans une formule

Bonjour SkyCorp, abcd et CISCO, bonjour à toutes et à tous 🙂

Je n'ai pas très bien compris non plus, mais tu parles de formules nommées, voici ton fichier modifié.

@+

EDIT : Oups ! Boum adcd 😉 Désolé, je n'avais pas rafraîchi
 

Pièces jointes

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

Rebonjour

Oui, abcd et nolich, effectivement, cela revient à une formule nommée...

Ca a bien dû vous arriver, de faire une formule hyperlongue que je symbolise ici par XXXXXXXXXXX.
Vous écrivez = XXXXXXXXXXX, et vous obtenez les résultats attendus, et une fois de temps en temps, tout à fait logiquement, un message d'erreur, ou un cas à éliminer.
Il vous faut donc écrire par exemple =SI(ESTERREUR(XXXXXXXXXXX); "";XXXXXXXXXXX).

Ca peut bien sûr être fait avec une colonne intermédiaire, contenant =XXXXXXXXXXX, cachée ou non, ou avec une formule nommée. Mais si on utilise cette formule nommée que là... n'est-ce pas utiliser un marteau pour écraser une mouche ?

Si j'ai bien compris la demande de SkyCorp, c'est "Est-il possible de faire cela simplement, directement dans la formule ?"

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

Re Cisco,

Il y a moyen de recopier la première formule par un simple copier/coller.
Pour ne pas devoir sélectionner une partie de formule dans la barre de formule (pas toujours facile), en cliquant sur l'icône fx à gauche de la barre de formule, il est plus facile de copier (par un Ctrl+C) la partie de formule concernée dans la fenêtre de dialogue qui s'est ouverte.

En ce qui me concerne je n'écris jamais :
=SI(ESTERREUR(la formule);"";la formule)
mais je cherche l'origine de l'erreur et c'est celle-là que j'emploie comme condition, par exemple :
=SI(NB.SI(A:A;B2);la formule;"")

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

Re Cisco,

Il y a moyen de recopier la première formule par un simple copier/coller.

abcd

C'est aussi ce que je fais d'habitude, mais alors, parfois, tu te retrouves avec une formule qui fait 5 lignes dans la barre de formule.
De plus, quand tu réouvres ce fichier 3 mois plus tard, ce n'est pas très facile de tout comprendre si tu n'as pas le réflexe d'augmenter suffisament la hauteur de cette barre ...

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

Bonjour

Perso lorsque je suis confronté à des formules superlongues ou utilisés de nombreuses fois dans un fichier, je crée la fonction avec vba....
Cela permet d'avoir qqche de plus lisible et lorsque l'on utilise plusieurs fois cette formule on n'est pas obligé de toutes les modifier on ne modifie que le code vba..
Mais cela demande d'utiliser du vba ce que SkyCorp ne souhaite pas faire..
 
Re : Définition de variables locales dans une formule

Bonsoir à tous, je viens tout juste de rentrer du boulot.


C'est exactement ce qu'il m'arrive, et celà pour plusieurs formules différentes sur plusieurs colonnes. Et tout comme vous, j'utilise en général des copier/coller, mais la formule devient plutôt difficile à lire à présent (je n'ose pas imagine ce que ce sera dans 3 mois). C'est la raison pour laquelle j'ai fourni un exemple très simple (et plutôt stupide, je sais, mais le but était de faire quelque chose de simple).

Concernant VBA, il me semblait bien que c'était possible, mais je préfère tout de même pouvoir lire la formule directement sur la cellule. (Par ailleurs, je ne suis pas trop familier avec VBA, ce qui n'arrange rien).
 
Re : Définition de variables locales dans une formule

Bonsoir à tous, peut être suis-je hors sujet,

un ptit test en VBA

Code:
Sub test()
With Sheets("Feuil1")
    Dim i As Integer, Fin1 As Integer, Fin2 As Integer
    Fin1 = .Range("a" & .Rows.Count).End(xlUp).Row
    Fin2 = .Range("b" & .Rows.Count).End(xlUp).Row
    If Fin1 > Fin2 Or Fin1 = Fin2 Then
        For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Row
            If IsNumeric(.Cells(i, 1)) And IsNumeric(.Cells(i, 2)) Then
                .Cells(i, 3).Value = "Vrai"
            Else
                .Cells(i, 3).Value = "Faux"
            End If
        Next i
        Else
        For i = 1 To .Range("b" & .Rows.Count).End(xlUp).Row
            If IsNumeric(.Cells(i, 1)) And IsNumeric(.Cells(i, 2)) Then
                .Cells(i, 3).Value = "Vrai"
            Else
                .Cells(i, 3).Value = "Faux"
            End If
        Next i
    End If
End With
End Sub

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

Merci beaucoup pour cet effort, mais je cherche justement à éviter VBA.

Pour donner un exemple peut-être un peu plus parlant, j'ai une colonne qui indique une durée en année et en anglais du style "12.4 yrs." et je cherche à en extraire la valeur numérique uniquement, soit 12,4

De plus, dans certains cas, je dispose d'un intervalle de dates, les 2 dates étant séparées par "-", du style "3-6 yrs.". Dans ce cas, je ne prends pas en compte la valeur (une autre colonne s'en chargeant).


Ma méthode consiste tout d'abord à rechercher " yr" et conserver la partie à gauche de cette recherche. Il me reste donc dans les 2 exemples ci-dessus "12.4" et "3-6".
Dans un second temps, je cherche les points et les remplace par des virgules, ce qui me donne ici "12,4" et "3-6".
Puis je détecte le caractère "-" pour ne prendre en compte que 12,4.
Puis je convertis la chaîne de caractères "12,4" en valeur numérique.


J'ai joint un nouveau fichier Excel qui montre ces étapes et je cherche ne faire qu'une seule colonne par valeur recherchée avec une formule explicite (donc rien de caché dans une autre cellule ou par du code VBA) et des variables pour alléger la formule et faciliter la compréhension.

Donc si quelqu'un a une idée à ce sujet, je suis preneur!
 

Pièces jointes

Re : Définition de variables locales dans une formule

Bonjour

My two cents :

Je résout aussi cela par formule nommée.

Ce n'est pas plus lourd que VBA et plus directement accessible pour tout un chacun si je ne suis pas seule à utiliser le classeur.

Bon week end ensoleillé à tous
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…