XL 2013 Fonction Si et Fonction Adresse

SebdeVals

XLDnaute Nouveau
Bonjour à tous,
voilà mon problème est que je souhaite récupérer une le nom d'une cellule ex: D8 en faisant soit par la fonction adresse et la fonction ligne comme ceci-> =ADRESSE(LIGNE();4;3;1) ou par concaténation en indicant en dur la lettre de la colonne et la fonction ligne ->CONCATENER("D"&LIGNE()).
les deux fonctions fonctionnent, mais lorsque je les intègre dans une formule comme çà
-> SI(ADRESSE(LIGNE();4;2)="10";CONCATENER("Indicateur CO2 Ligne ";LIGNE();" Vrai");FAUX) ou SI(CONCATENER("D"&LIGNE())=10;CONCATENER("Indicateur CO3 Ligne ";LIGNE();" Vrai");FAUX)
et bien çà ne fonctionne pas.
alors que si je l'écris comme çà: SI(D8=10;CONCATENER("Indicateur CO1 Ligne ";LIGNE();" Vrai");FAUX)
tout marche.
Merci de votre aide.
je vous joint mon fichier de test...
 

Pièces jointes

  • Classeur1.xlsm
    15.5 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Bonsoir.
C'est à INDIRECT qu'il faut spécifier une expression texte représentant une adresse de cellule dont on veut la valeur.
Mais le plus souvent on peut éviter de passer par l'adresse de la cellule en utilisant la fonction INDEX ou DECALER.
 

SebdeVals

XLDnaute Nouveau
bonjour Dranreb, je viens de faire le test en y incluant INDIRECT et bien il semblerait que çà fonctionne!! Merci.
Savez-vous comment faire pour faire que ma formule ecrite au format texte puisse être ajouter dans une cellule en tant que formule?
 

SebdeVals

XLDnaute Nouveau
Bonjour.
Je ne suis pas sûr de comprendre votre question, mais pour qu'une formule entrée dans la barre de formule soit bien interprétée comme telle, la cellule ne doit pas être munie d'un format Texte.
Afin que mon classeur soit le plus dynamique possible comme dans le fichier joint précédemment, j'aimerais récupérer ma formule écrite sans le "="(donc au format texte) puis contanétée avec le "=" et copiée dans une autre colonne (G par exemple). Cette même formule sera répétée plusieurs centaines de lignes afin d'obtenir le résultat semblable à la colonne F.
 

Dranreb

XLDnaute Barbatruc
J'ai du mal à cerner la finalité de tout ça. J'ai l'impression que c'est un problème qu'il faudrait reprendre à zéro.
Cela dit une instruction ActiveSheet.[G5].FormulaLocal = "=" & ActiveSheet.[B2].Value devrait installer la formule. Mais je ne connais pas de moyen de le faire uniquement par formules.
Voir aussi ce que pourrait apporter une fonction personnalisée…
 

SebdeVals

XLDnaute Nouveau
La finalité de tout ça...
Suivant l'indicateur sélectionné en haut de la feuille, la formule qui sera sélectionné sera répétée quelque milliers de fois pour qu'elle s'applique suivant les différentes lignes (d’où le fait que j'utilise les fonctions Adresse et ligne)
afin d'effectuer ensuite des RechercheV dans une autre feuille qui me sert de Base de donnée.
Si le faire sous forme de formule n'est pas possible, le faire par VBA, j'en suis incapable car aucune connaissance.
Merci de votre aide.
 

Dranreb

XLDnaute Barbatruc
Oui mais pourquoi voulez vous que ces formules soient notées dans des cellules ?
Il peut y en avoir tant de différentes, non prévisibles à la conception de l'application ?
Si oui, quand même, y vaudrait mieux, je crois, les mettre en notation R1C1, ce serait plus facile à appliquer. Remarquez: il serait possible d'écrire une macro qui remplace, dans la table, une formule en le texte de sa version R1C1. Il ne faudrait pas utiliser LIGNE() dans la formule entrée en A1 local, mais le numéro de ligne de ce modèle. En notation R1C1, le numéro de la ligne portant la formule se note simplement par R.
 

Dranreb

XLDnaute Barbatruc
Avec le code ci après dans le module de la feuille, si en B9 je tape :
Code:
=si($d9=10;"Indicateur "&$A9&" Ligne "&ligne()&" Vrai";faux)
Il me le remplace immédiatement par le texte :
Code:
IF(RC4=10,"Indicateur "&RC1&" Ligne "&ROW()&" Vrai",FALSE)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count <> 1 Or Target.Columns.Count <> 1 Then Exit Sub
If Intersect([B7:B100], Target) Is Nothing Then Exit Sub
If Not Target.HasFormula Then Exit Sub
Target.Value = Mid$(Target.FormulaR1C1, 2)
End Sub
 

Dranreb

XLDnaute Barbatruc
À titre d'exemple, cette version de la Worksheet_Change appliquerait en même temps la formule aux cellules F7:F13 lors du choix en A2 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count <> 1 Or Target.Columns.Count <> 1 Then Exit Sub
If Not Intersect([B7:B100], Target) Is Nothing Then
   If Target.HasFormula Then Target.Value = Mid$([A6].FormulaR1C1, 2)
ElseIf Target.Address = "$A$2" Then
   [F7:F13].FormulaR1C1 = "=" & [B6].Offset(WorksheetFunction _
     .Match(Target.Value, [A7:A100], 0)).Value
   End If
End Sub
 

SebdeVals

XLDnaute Nouveau
Bonjour,
pour obtenir la formule qui doit être appliquée suivant le contenu de la cellule $A$2
je fais une rechercheV.
=CONCATENER("=";RECHERCHEV($U$2;Tab_Description;5))
qui est recopiée dans la colonne G dans mon fichier test.

Maintenant est-il possible d'insérer cette formule en VBA par l'intermédiaire d'une fonction?

j'ai trouvé ceci sur le net...
Dans un module,
-----------------------------------
Function zaza(texte)
zaza = Evaluate("=" & texte)
End Function

En H3, à recopier vers le bas:
=zaza(G2)
---------------------------------------
est-il possible de faire ce genre de chose en partant du résultat d'une rechercheV?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Personnellement je n'utilise jamais RECHERCHEV, mais toujours seulement EQUIV, éventuellement combiné à INDEX.
WorksheetFunction.Match c'est EQUIV.
Pourquoi ça n'irait pas avec la formule en notation R1C1, installée avec mon code ?
Pour pouvoir utiliser Evaluate, la formule devrait de toute façon être en notation A1 native, non en notation A1 locale.
 
Dernière édition:

SebdeVals

XLDnaute Nouveau
je n'ai jamais utilisé EQUIV, je vais regarder comment çà fonctionne réellement...
mais le peu que j'ai lu sur cette fonction et ce que j'ai pu comprendre, elle fait la recherche d'une valeur et affiche une autre colonne ( mais seulement si le résultat est unique, non?)
Après, mes résultats de recherche sont toujours des VRAI ou des FAUX, est-ce que çà ne va pas poser de problème pour trouver les colonnes d'à coté?
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 886
Membres
101 830
dernier inscrit
sonia poulaert