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

Diverses formules dans la même cellule

solo84

XLDnaute Junior
Bonjour à tous,

Tout d'abord, comme cela est mon premier message, je vous félicite tous pour ce fabuleux forum.
J'aurais besoin de vos conseils sur un sujet qui me préoccupe depuis quelques temps.
Je suis en train de créer un formulaire qui devra effectuer des calculs sur plusieurs tableaux simultanément. J'ai créer deux fonctions de calculs de test.
Je vais tenter de vous expliquer aussi clairement que possible.
Je sélectionne dans une première liste le pays de destination, une seconde cellule m'affiche alors les différents codes postaux une fois celui-ci choisit avec une fonction recherche-v je trouve la ligne correspondante au pays et au code postal.
Vous me direz ou est le problème !!! J'ai 28 pays et une seule cellule !!! Comment puis je afficher la formule adéquate correspondante à la sélection du pays ?
J'ai pensé a passer par le VBA avec une succession de If then en fonction du string rentré.
Mais j'aurais souhaité avoir vos avis sur la question u une piste de travail.
Je ne vous ai pas joint de fichier car il est constitué de 30 tableaux différents et un peu lourd.
Je prépare un fichier d'exemple avec seulement 2 pays et 2 transporteurs afin que cela soit plus clair.
Merci de toute l'aide que vous pourriez m'apporter et de toute votre gentillesse !

Bien amicalement,

Solo
 

solo84

XLDnaute Junior
Re : Diverses formules dans la même cellule

Le code suivant te semble t-il coherent :
Option Explicit
Private Sub Worksheet_Change()
Range("D8").Select
If ActiveCell="Suisse" Then
Range("F8").Formula= Formule N°1
Else If ActiveCell="Autriche" Then
Range("F8").Formula= Formule N°2

End If
End Sub

Puis je avoir ton avis sur la question ?
 
Dernière édition:

solo84

XLDnaute Junior
Re : Diverses formules dans la même cellule

Option Explicit

Dim WS As Worksheet
Dim valeur As Range

Private Sub Worksheet_Activate()

valeur = Range("D12")

End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Range("D12").Select
If Range("D12").Value = "Suisse" Then
Range("H13").FormulaR1C1 = "=SI(ESTNA(RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX)),"",RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX))"
Else
If Range("D12").Value = "Autriche" Then
Range("H13").FormulaR1C1 = "=SI(ESTNA(RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX)),"",RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX))"
End If
End If
End Sub


J'ai modifié le code et ça ne marche toujours pas !! Snif snif
 

solo84

XLDnaute Junior
Re : Diverses formules dans la même cellule

Ca marche !!! Mais ca ne marche qu'avec une fonction somme ! je ne comprends pas pourquoi ca ne marche pas avec l'autre fonction que j'ai mis en commentaire

Option Explicit

Dim WS As Worksheet
Dim valeur As Range

Private Sub Worksheet_Activate()

valeur = Range("D12")

End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Range("D12").Select
If Range("D12").Value = "Suisse " Then
Range("H13").Select
'With WS
'Range("H13").FormulaLocal = "=SI(ESTNA(RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX)),"",RECHERCHEV($D$13;CP!$Q$5:$R$53,2,FAUX))"
Range("H13").FormulaLocal = "=somme(k10:k14)"
'End With
Else
If Range("D12").Value = "Autriche " Then
Range("H13").Select
'With WS
'Range("H13").FormulaLocal = "=SI(ESTNA(RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX)),"",RECHERCHEV($D$13,CP!$Q$5:$R$53,2,FAUX))"
Range("H13").FormulaLocal = "=somme(l10:l14)"
'End With
End If
End If
End Sub
 

wilfried_42

XLDnaute Barbatruc
Re : Diverses formules dans la même cellule

re:

gerer les "" dans une formule est assez complexe, je prefere chr(34)

Code:
Range("H13").FormulaLocal ="=SI(ESTNA(RECHERCHEV($D$13;CP!$Q$5:$R$53;2;FAUX)) ;" & chr(34) & chr(34) & ";RECHERCHEV($D$13;CP!$Q$5:$R$53;2;FAUX))"

de plus : remplacer les , par des ; en FormulaLocal
 

solo84

XLDnaute Junior
Re : Diverses formules dans la même cellule

Désormais ça marche, j'ai corrigé mon erreur, voici la forme que cela à :

Option Explicit

Dim WS As Worksheet

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
Range("D12").Select

If Range("D12").Value = "Suisse " Then
With WS
Range("H13").FormulaLocal = "=si(estna(recherchev($D$13;CP!$Q$5:$S$53;2;faux));0;recherchev($D$13;CP!$Q$5:$S$53;2;faux))"
'Range("H13").FormulaLocal = "=somme(k10:k14)"
End With
Else
If Range("D12").Value = "Autriche " Then
With WS
Range("H14").FormulaLocal = "=SI(ESTNA(RECHERCHEV($D$13;CP!$Q$5:$S$53;3;FAUX));0;RECHERCHEV($D$13;CP!$Q$5:$S$53;3;FAUX))"
'Range("H13").FormulaLocal = "=somme(l10:l14)"
End With
End If
End If
End Sub


Je vais adopter un mix des deux méthodes :une base de donnée avec la fonction decaler et un ensemble de formule en focntion du contenue d'une cellule !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…