textbox et feuille

textbox et feuille - VB/VBA/VBS - Programmation

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
 
 
 
 

Reply

Marsh Posté le 16-06-2010 à 17:09:01   

Reply

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 :
  1. Function Calcule(Val1)
  2.     Calcule = Evaluate(Val1)
  3. End Function


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 :D
 
Cordialement


Message édité par SuppotDeSaTante le 17-06-2010 à 15:33:24

---------------
Soyez malin, louez entre voisins !
Reply

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!!

Reply

Marsh Posté le 17-06-2010 à 17:01:22    

Rien compris


---------------
Soyez malin, louez entre voisins !
Reply

Marsh 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

Reply

Marsh Posté le 17-06-2010 à 17:19:12    

Code :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     If MsgBox("Sur cette cellule ?", vbYesNo + vbQuestion) = vbYes Then
  3.         'ici ton code pour recuperer les infos de ton textbox
  4.         'Target.Row recuperer la ligne de la cellule sur laquelle tu es
  5.         'Target.Column recuperer la colonne de la cellule sur laquelle tu es
  6.         'donc
  7.         'Cells(Target.Row,Target.Column).Value = Ta valeur
  8.     Else
  9.         Exit Sub
  10.     End If
  11. End Sub


---------------
Soyez malin, louez entre voisins !
Reply

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

Reply

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


Message édité par SuppotDeSaTante le 17-06-2010 à 22:21:05

---------------
Soyez malin, louez entre voisins !
Reply

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
 
 
 
 

Reply

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 :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.    Ligne = Target.Row
  3.    Colonne = Target.Column
  4. End Sub


 
Ensuite ton code avec les variables publiques :

Code :
  1. Public Ligne, Colonne
  2. Private Sub OK_Click()
  3. Sheets("AVANT METRE" ).Activate
  4.     If MsgBox("Sur cette cellule ?", vbYesNo + vbQuestion) = vbYes Then
  5.     Cells(Ligne, Colonne).Value = TextBox1.Value
  6. Etc.


Message édité par SuppotDeSaTante le 18-06-2010 à 13:38:05

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 18-06-2010 à 13:35:32   

Reply

Marsh Posté le 18-06-2010 à 13:51:41    

j'essaye merci pour votre patience

Reply

Marsh Posté le 18-06-2010 à 16:08:21    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed