Formule dans un Textbox

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

J'ai vu que le sujet avait déjà été traité, mais je n'arrive pas à adapter à mon fichier.

J'ai 2 formules :
Code:
=INDEX(TabPoids;EQUIV(GAUCHE($B$15;2)*1;Dept;0);EQUIV(GAUCHE($H$55;NBCAR($H$55)+1-CHERCHE(" ";$H$55))*1;Poids;1))+0,55
Code:
=SI(CherchePoids2<100;CherchePoids;CherchePoids2*(CherchePoids/100))+2,74

Ce que j'aimerais, c'est afficher le résultat dans un Textbox, en fonction du résultat, ou à minima, avoir 2 Textbox et avoir le calcul de la formule dans chacun d'eux.

J'ai essayé :
Code:
TextBox2 = Formulalocal ="=Index...etc"
Mais le résultat envoyé est False.

Merci de votre aide.
 

Calvus

XLDnaute Barbatruc
Bonsoir Job75, le forum,

Job, J'ai un nouveau petit problème avec ma formule que je n'arrive pas à résoudre.
Il s'agit d'un autre fichier, légèrement différent, dont j'ai adapté un exemple précis.

Les formules vues plus haut fonctionnent, sauf deux, mais le problème vient de la 1ère, et induit donc une seconde erreur.
C'est sur l'ajout du nom défini.
VB:
ThisWorkbook.Names.Add "CherchePoids", [Index(Tab_Poids_Chabas,Match(Left(Sheets(Nomg).B15, 2)*1,Dept_Chabas,0),Match(Left(YY,Len(YY)+1-Find(" ",YY))*1,Poids_Chabas,1))]

Et le souci se situe à ce niveau :
VB:
Match(Left(Sheets(Nomg).B15, 2)*1,Dept_Chabas,0)

En remplaçant cette partie par une valeur quelconque, ça fonctionne.

J'ai essayé en ajoutant des points, en en enlevant, en ajoutant des crochets...., rien n'y fait.
J'ai du mal saisir.

Dans le fichier, seules sont actives les 3 dernières feuilles (130, 131, 132).
Si on veut démarrer la macro à partir c'une cellule autre que V3, il ne faut pas utiliser le bouton sur la feuille mais directement depuis l'éditeur.

Merci.
 

Pièces jointes

  • Label TabPoids Forum 2.xlsm
    118.9 KB · Affichages: 42

job75

XLDnaute Barbatruc
Re,

Oui, une balade dans le Nord.
Code:
Private Sub UserForm_Initialize()
[B40:B44] = "" 'RAZ
On Error Resume Next
With Sheets(CStr(ActiveCell(1, 2)))
  ThisWorkbook.Names.Add "Cible", .[B15]
  ThisWorkbook.Names.Add "XX", Replace(.[H55], ",", ".")
  ThisWorkbook.Names.Add "CherchePoids2", [Left(XX,Find(" ",XX)-1)*1]
  ThisWorkbook.Names.Add "CherchePoids", [Index(Tab_Poids_Chabas,Match(Left(Cible, 2)*1,Dept_Chabas,0),Match(CherchePoids2,Poids_Chabas,1))]
  Label1 = "Gefco" & vbLf & [CherchePoids+0.55]
  Label2 = "Chabas" & vbLf & [IF(CherchePoids2<100,CherchePoids,CherchePoids2*CherchePoids/100)+2.74]
  [B40] = [CherchePoids+0.55]
  [B41] = .[H55]
  [B42] = [CherchePoids]
  [B43] = [IF(CherchePoids2<100,CherchePoids,CherchePoids2*CherchePoids/100)+2.74]
  [B44] = [CherchePoids2]
End With
End Sub
Ta formule avec Find n'était pas bonne.

Edit : pour la macro d'ouverture de l'USF ton erreur était grossière :
Code:
Sub USF()
If ActiveCell.Address <> "$V$3" Then [V3].Select
UserForm1.Show
End Sub
A+
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Bonsoir Job, le forum,

C'était sympa ta balade ? Tu as du avoir froid ! Brrrr ;)

Et bien merci encore une fois.
Je comprends la logique, mais je n'y aurais pas pensé tout seul ou n'aurais pas trouvé.
Ce doit être ce qui s'appelle progresser petit à petit.
Et avant d'ouvrir l'USF tu faisais une erreur grossière, il faut écrire :
Ok. Là aussi je saisi la finesse, mais pourquoi était ce une erreur grossière ?
A+
 

Calvus

XLDnaute Barbatruc
Re,

C'est cool de me répéter que je fais des erreurs grossières, peut être mêmes profondément débiles....
Mais ça ne fait rien avancer du point de vue pédagogique.
Je continuerai donc à faire des erreurs grossières, n'ayant pas compris pourquoi elles le sont, puis je reviendrai demander de l'aide pour corriger mes erreurs grossières, me faisant à nouveau traiter de débile de l'excel....

E tout cas, merci pour ton aide jusqu'à présent.
 

job75

XLDnaute Barbatruc
Bonjour Calvus, le forum,

Puisque tu parles des erreurs...

Je viens de modifier la macro du post #20 car CherchePoids2 est utilisé dans la définition de CherchePoids et doit donc être défini avant.

Maintenant quand tu écris If Selection <> [V3] Then VBA essaie de comparer 2 valeurs (propriété .Value par défaut).

D'abord cela beugue si Selection est constituée de plusieurs cellules.

Ensuite, si Selection n'a qu'une cellule, le test peut renvoyer False même si Selection n'est pas la cellule V3.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa