textbox et feuille - VB/VBA/VBS - Programmation
Marsh Posté le 17-06-2010 à 15:29:19
Hello 
 
je ne suis pas sur d'avoir tout saisi mais tanpis. 
 
On se créé une fonction Calcule() toute bete a l'aide de la fonction VBA Evaluate() : 
| Code : 
 | 
 
Une fois notre fonction créée, je prends comme exemple : 
A1 : 10 
A2 : *      (qui est le symbole multiplier et non pas un "x" ) 
A3 : 3 
 
Et en A4 : =Calcule(A1 & B1 & C1) 
 
Le "&" sert a concatener. Ce qui fait que notre chaine "A1 & B1 & C1" renvoit en fait "10*3" qui avec Evaluate est transformé en multiplication. 
Et là, A4 renvoi bien 30 
 
Maintenant si je pousse le vice : 
A1 : 10 
A2 : * 
A3 : 3 
A4 : + 
A5 : 12 
Ce qui nous ferait  10*3 = 30 ; 30 + 12 = 42 
 
Si en A6 je mets : =Calcule(A1 & A2 & A3 & A4 & A5) 
Ca me revoi bien 42 
 
Enjoy  
 
 
Cordialement
Marsh Posté le 17-06-2010 à 16:01:25
c'est encore plus poussé que ça ce que je veut faire j'ai reussi en cherchant bien enfaite j'ai fait une userbox ou il y a des textbox ou l'ont peut marqué les chiffré a calculer  
le calcul se fait automatiquement dans une autre textbox ensuite l'operation en entier apparé sur une feuille de calcul parce que enfaite il me faut tout ce que j'ai fait pour ateindre ce resultat 
donc pour sela j'ai utiliser la fonction :  
 
 Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox1.Value 
 
maintenant je cherche comment avec la souris pointé la ligne parce que sinon il faut mettre des points pour que cela prennent la derniere ligne 
 
j'ai bien travaillé hihi!!
Marsh Posté le 17-06-2010 à 17:01:22
ReplyMarsh Posté le 17-06-2010 à 17:13:25
en faite c'est simple mais je m'exprime mal 
dasn mon métier il me faut ecrire tout le mode operatoir pour arriver au resultat pour que ce soit facile a controler  
donc l'operation type 30+10 = 40 doit etre inscrite en entier sur ma feuille de calcul 
pour ne pas m'embéter a perdre du temps a la saisie j'ai eu l'idee de créer un utilitaire, 
donk j'ai fai une feuille de base, une userforme avec plusieur textbox 
1- dans la userform l'operation ce fait (met le resultat)j'aurai pu l'eviter mais j'aime bien 
2-ensuite ces chiffres vont sur ma feuille 
3-si vous connaisser cette formule 
Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select  
ActiveCell.Value = TextBox1.Value  
vous devez savoir que les chiifre ce mettent a la derniere case vide 
et moi ce que je veut et dont je n'arrive pas c'est cliké sur une ligne et que les données de la textbox vient la ou j'ai cliké et non a la derniere case vide de ma colonne 
 
c'est mieu expliqué? sinon dsl 
Marsh Posté le 17-06-2010 à 17:19:12
| Code : 
 | 
Marsh Posté le 17-06-2010 à 19:00:15
ça marche pas voici ma programation: 
 
Private Sub ANNULER_Click() 
CALCULS.Hide 
End Sub 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
 
    If MsgBox("Sur cette cellule ?", vbYesNo + vbQuestion) = vbYes Then 
    Cells(Target.Row, Target.Column).Value 
    Else 
       Exit Sub 
    End If 
End Sub 
 
 
Private Sub UserForm_Initialize() 
 
TextBox1 = "" 
TextBox2 = "" 
TextBox3 = "" 
TextBox4 = "" 
TextBox5 = "" 
TextBox6 = "" 
TextBox7 = "" 
TextBox8 = "" 
TextBox9 = "" 
TextBoxb = "" 
TextBoxh = "" 
TextBox12 = "" 
TextBoxb1 = "" 
TextBoxb2 = "" 
TextBoxh1 = "" 
TextBox16 = "" 
 
End Sub 
 
Private Sub OK_Click() 
 
Sheets("AVANT METRE" ).Activate 
 
Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox1.Value 
Range("E" & Range("E" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox2.Value 
Range("K" & Range("K" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox3.Value 
 
Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox4.Value 
Range("E" & Range("E" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox5.Value 
Range("K" & Range("K" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox6.Value 
 
CALCULS.Hide 
Unload CALCULS 
 
End Sub 
 
Private Sub TextBox1_Change() 
If TextBox2.Value = "" Then Exit Sub 
For i = 1 To Len(TextBox1.Value) 
TextBox3 = TextBox1 * TextBox2 
Next i 
End Sub 
Private Sub TextBox2_Change() 
If TextBox1.Value = "" Then Exit Sub 
For i = 1 To Len(TextBox2.Value) 
TextBox3 = TextBox1 * TextBox2 
Next i 
 
End Sub 
 
Private Sub TextBox4_Change() 
If TextBox5.Value = "" Then Exit Sub 
For i = 1 To Len(TextBox4.Value) 
TextBox6 = Val(TextBox4) + Val(TextBox5) 
Next i 
End Sub 
 
Private Sub TextBox5_Change() 
If TextBox4.Value = "" Then Exit Sub 
For i = 1 To Len(TextBox5.Value) 
TextBox6 = Val(TextBox4) + Val(TextBox5) 
Next i 
 
End Sub 
 
Private Sub TextBox7_Change() 
If TextBox8.Value = "" Then Exit Sub 
For i = 1 To Len(TextBox7.Value) 
TextBox9 = Val(TextBox7) - Val(TextBox8) 
Next i 
End Sub 
 
Private Sub TextBox8_Change() 
If TextBox7.Value = "" Then Exit Sub 
For i = 1 To Len(TextBox8.Value) 
TextBox9 = Val(TextBox7) - Val(TextBox8) 
Next i 
 
End Sub 
 
Private Sub TextBoxb_Change() 
If TextBoxh.Value = "" Then Exit Sub 
For i = 1 To Len(TextBoxb.Value) 
TextBox12 = Val(TextBoxb * TextBoxh) / 2 
Next i 
End Sub 
 
 
Private Sub TextBoxh_Change() 
If TextBoxb.Value = "" Then Exit Sub 
For i = 1 To Len(TextBoxh.Value) 
TextBox12 = Val(TextBoxb * TextBoxh) / 2 
Next i 
 
End Sub 
 
Private Sub TextBoxb1_Change() 
If TextBoxb2.Value = "" Then Exit Sub 
For i = 1 To Len(TextBoxb1.Value) 
TextBox16 = ((Val(TextBoxb1) + Val(TextBoxb2)) * Val(TextBoxh1)) / 2 
Next i 
 
End Sub 
Private Sub TextBoxb2_Change() 
If TextBoxb1.Value = "" Then Exit Sub 
For i = 1 To Len(TextBoxb2.Value) 
TextBox16 = ((Val(TextBoxb1) + Val(TextBoxb2)) * Val(TextBoxh1)) / 2 
Next i 
 
End Sub 
Private Sub TextBoxh1_Change() 
If TextBoxb1.Value = "" Then Exit Sub 
For i = 1 To Len(TextBoxh1.Value) 
TextBox16 = ((Val(TextBoxb1) + Val(TextBoxb2)) * Val(TextBoxh1)) / 2 
Next i 
 
End Sub
Marsh Posté le 17-06-2010 à 22:16:39
| babylon64 a écrit : ça marche pas  | 
 
sois un peu plus explicite... 
 
Je ne vois pas pourquoi un simple code sur un Change d'une feuille ne fonctionnerait pas... 
 
Tu ne mets aucune valeur dans la cellule, normal que ca ne marche pas : 
Cells(Target.Row, Target.Column).Value = Il manque un truc la. Ce qu'il doit etre dans cette cellule par exemple, comme Cells(Target.Row, Target.Column).Value = TextBox1.Value 
 
Ou dans ton OK_Click() tu mets dans des variables globales les valeurs des textbox en vue de les passer par le Worksheet_SelectionChange
Marsh Posté le 18-06-2010 à 13:24:53
Alors voila ce que j'ai fait avec tes conseilles :  
 
Private Sub OK_Click() 
 
Sheets("AVANT METRE" ).Activate 
 
'Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
 
    If MsgBox("Sur cette cellule ?", vbYesNo + vbQuestion) = vbYes Then 
    Cells(Target.Row, Target.Column).Value = TextBox1.Value 
    Cells(Target.Row, Target.Column).Value = TextBox2.Value 
    Cells(Target.Row, Target.Column).Value = TextBox3.Value 
    Cells(Target.Row, Target.Column).Value = TextBox4.Value 
    Cells(Target.Row, Target.Column).Value = TextBox5.Value 
    Cells(Target.Row, Target.Column).Value = TextBox6.Value 
     
     
    Else 
       Exit Sub 
    End If 
 
 
Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox1.Value 
Range("E" & Range("E" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox2.Value 
Range("K" & Range("K" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox3.Value 
 
Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox4.Value 
Range("E" & Range("E" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox5.Value 
Range("K" & Range("K" & Cells.Rows.Count).End(xlUp).Row + 1).Select 
ActiveCell.Value = TextBox6.Value 
 
CALCULS.Hide 
Unload CALCULS 
 
End Sub 
 
 
sa me met qu'il ya a une erreur au niveau de 
Cells(Target.Row, Target.Column).Value = TextBox1.Value 
 
 
 
 
Marsh Posté le 18-06-2010 à 13:35:32
Euh... Oula... Pourquoi mettre
| Citation : 'Private Sub Worksheet_SelectionChange(ByVal Target As Range) | 
en commentaire ?? 
La variable Target n'est plus définie... Forcément ca ne peut pas marcher... 
 
Tu ne peux pas utiliser Target dans un Click sur bouton... Ou alors comme déjà dit plus haut tu passes par des variables publiques. 
 
Sur ta feuilles ou tu cliques : (Pas dans un module de UserForm ou un module que toi tu créés hein, sur le module de la feuille !) 
| Code : 
 | 
 
 
Ensuite ton code avec les variables publiques : 
| Code : 
 | 
Marsh Posté le 16-06-2010 à 17:09:01
Bonjour
j'aimerai créer une feuille de calcul pour une saisie plus rapide avec des formules tel que 10 x 3 = 30 ce mettrai automatiquement dans une case
tel que :
10 case A1
"X" caseB1
j'aimerai aussi que la somme, l'addition ect ce fasse
des colonnes sont predéfinie mais pas les case puisque les formule se mette au gré de ma saisie
j'avais penser a une userform avec des textbox pour les chiffre et des listes déroulantes pour les symboles
donc ces fameuse formule jaimerai quelles apparaissent sur ma feuille il y a aussi que chaque formules peuvent être séparé par plusieurs ligne blanche
en espérant vous avoir bien expliquer si quelqu'un peut m'aider
merci d'avance