textbox et controlsource

polin

XLDnaute Nouveau
bonsoir a tous

pourquoi ca marche pas et comment faire pour que ca marche?

je mets sur feuille1 en a1 un mot 'bonjour'
je met sur feuille 2 en b1 '=feuil1!a1'
je change en feuil1,a1 'bonjour' par 'bonsoir' et feuil2,b1 recoit 'bonsoir'
la tout vas bien,et autant de changement de mot en a1 que je veux


je cree un userform1 avec un textbox1 dedans
a controlsource du textbox1 je met b1
la textbox affiche bien le mot de b1(bonsoir ou bonjour) et fais bien le changement si je change le mot en feuille1,a1


le problème :
si je ferme la textbox1, la feuille 2,b1 ne contient plus la formule'=feuil1!a1' mais le dernier mot affiché
et donc plus de changement en feuil2,b1, ni dans la textbox lorsque je change le mot en feuille1,a1

en esperant avoir été le plus clair possible pourquoi , comment ?

grand merci d'avance
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir polin,

La propriété ControlSource fonctionne dans les 2 sens, c'est à dire que ton contrôle Textbox prend la valeur de la cellule, mais cette dernière prend également la valeur du TextBox lié. Ta formule en B1 (feuille 2) disparaît donc d'office avec l'utilisation de cette propriété.

Pour contourner ce problème, je ne puis que te conseiller dans ce cas de ne pas utiliser cette propriété pour gérer la valeur du TextBox.
Tu peux obtenir l'équivalent en utilisant ce code dans l'évènement Initialize() du UserForm :
Private Sub UserForm_Initialize()
      TextBox1.Value = ThisWorkbook.Sheets(2).Range('B1').Value
End Sub
Ainsi, à l'ouverture du USF, ton TextBox prend la valeur de la cellule, mais cette cellule ne perd plus son contenu...

Cordialement,
 

polin

XLDnaute Nouveau
bonjour a tous et merci mydearfriend

j'arrete donc le controlsource et prend ta solution

si je complique encore, est-il possible que la textbox prenne la valeur de B1,feuil2 sans avoir a fermer puis reouvrir l'userform car je voudrais appliquer cela a une autre textbox qui augmenterais de valeur (nombre) suivant une case c1,feuil2 '=nbval'

si c'est possible génial sinon je changerais de presentation

encore merci d'avance
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir polin, le Forum,

Soit en C1 de la feuille 2, une formule du type '=NbVal(....)', ainsi qu'un Userform nommé UserForm1 contenant un TextBox2, tu peux essayer de coller le code ci-dessous dans le module de code de la feuille 2 :
Private Sub Worksheet_Calculate()
      With UserForm1
            If .Visible Then .TextBox2.Value = Range('C1').Value
      End With
End Sub

Cette macro devrait te permettre de récupérer dans le TextBox2 du USF la valeur changeante de ta formule en C1 (feuille 2).

Cordialement,
 

caskad

XLDnaute Nouveau
Re : textbox et controlsource

Bonjour,

je déterre un topic légèrement vieux mais j'ai le même problème sous excel 2007 :D

exactement la même formule mais celle-ci ne marche pas.

J'ai également besoin d'afficher 2 cellules dans 2 textbox qui appartiennent a ma feuille"base".

Ces cellules contiennent une rechercheV et un controlesource de textbox me remplace effectivement la formule par la constante.

pourriez vous me dire ce qui cloche sous excel 2007?

Private Sub Worksheet_Calculate()
With UserForm1
If .Visible Then .TextBox2.Value = Range('C1').Value
End With
End Sub

If .Visible Then .TextBox5.Value = Range('B1').Value est en rouge et pas moyen de trouver

merci beaucoup vous me sauveriez la vie (façon de parler :))
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : textbox et controlsource

Bonjour,

petite remarque au passage, pas sûr que ton code soit placé au bon endroit... c'est une procédure événementielle qui est placée en principe dans le module d'une feuille de calcul et qui se déclenche lors du re-calcul de cette même feuille....
 

tototiti2008

XLDnaute Barbatruc
Re : textbox et controlsource

Bonjour à tous,

peut-être en remplaçant

Code:
If .Visible Then .TextBox2.Value = Range('C1').Value

par

Code:
If .Visible Then .TextBox2.Value = Range([COLOR=red][B]"[/B][/COLOR]C1[COLOR=red][B]"[/B][/COLOR]).Value
 

caskad

XLDnaute Nouveau
Re : textbox et controlsource

re ,

et merci pour les retours!

malheureusement, cela ne fonctionne pas, les guillemets n'y font rien :s

J'ai mis ce code dans ma feuille Base, j'ai testé dans un module mais rien à faire ..

mais j'ai fait une petite feinte qui fonctionne ^^

Merci qd même !
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : textbox et controlsource

Bonjour,
Peux tu explicité le pb, car en l'état c'est plus qu'incompréhesible
Tu dis avoir 2 textbox dans une feuille et ton code se réfère à un userform, et qui plus est dans une macro événementielle !
A+
kjin
 

caskad

XLDnaute Nouveau
Re : textbox et controlsource

re kjin et Pierrot93,

pour le soucis, j'ai effectivement un userform qui lit 2 cellules contenant 2 rechercheV (B1 et C1 en fonction de A1).

j'avais besoin de lire ces cellules dans 2textbox mais la propriété controlsource prenait le contrôle de lecture et réécriture ce qui effaçait mais formule.

je pensais pouvoir utiliser le code de ce post afin de les lire mais sous excel 2007, j'avais une erreur.

j'ai donc fait une chose simple, j'ai pris les cellules D1=B1 et E1=C1 et utilisé le controlesource de mes textbox pour les lire.

J'ai ajouté une petite macro

Range("D1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]"
Range("E1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]"
Range("E2").Select

qui solutionne mon problème sans toucher à mes formules.

voili voilou, c'est pas glorieux mais ca marche :)
 

kjin

XLDnaute Barbatruc
Re : textbox et controlsource

bonsoir,
Je souhaite juste comprendre pourquoi tu t'obstines à vouloir utiliser la propriété "ControlSource" plutôt que "Value"
Code:
TextBox1.Value = Range("B1")
Textbox2.Value = Range("C1")
Comme déjà dit plus haut...!
A+
kjin
 

caskad

XLDnaute Nouveau
Re : textbox et controlsource

re kjin,

je n'utilise pas cette propriété car je ne sais pas comment la faire réagir lors d'un changement dans l' usf.

Je tape un code dans ma listbox et mes 2 textbox doivent faire apparaitre le résultat de mes rechechV en b1 et c1.

La lecture Value me donne la valeur quand je tape un autre code et pas pendant que je tape le code voulu.

ce n'est pas évident quand on ne maitrise pas de bien expliquer ^^.

le principe est que j'ai besoin ensuite de faire apparaitre un webbrowser qui se connecte à un compte client, avec ce code, ca ne marche pas, il faut que je valide ma macro avec les anciennes valeurs de textbox pour que les nouvelles apparaissent.

Voila pourquoi je ne prend pas ce code tout simplement, mais je suis sur que l'on peut faire mieux :)

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 034
Membres
104 010
dernier inscrit
Freba