Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1424 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  textbox et feuille

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

textbox et feuille

n°2002302
babylon64
Posté le 16-06-2010 à 17:09:01  profilanswer
 

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
 
 
 
 

mood
Publicité
Posté le 16-06-2010 à 17:09:01  profilanswer
 

n°2002534
SuppotDeSa​Tante
Aka dje69r
Posté le 17-06-2010 à 15:29:19  profilanswer
 

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 !
n°2002541
babylon64
Posté le 17-06-2010 à 16:01:25  profilanswer
 

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

n°2002551
SuppotDeSa​Tante
Aka dje69r
Posté le 17-06-2010 à 17:01:22  profilanswer
 

Rien compris


---------------
Soyez malin, louez entre voisins !
n°2002555
babylon64
Posté le 17-06-2010 à 17:13:25  profilanswer
 

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

n°2002558
SuppotDeSa​Tante
Aka dje69r
Posté le 17-06-2010 à 17:19:12  profilanswer
 

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 !
n°2002570
babylon64
Posté le 17-06-2010 à 19:00:15  profilanswer
 

ç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

n°2002593
SuppotDeSa​Tante
Aka dje69r
Posté le 17-06-2010 à 22:16:39  profilanswer
 

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 !
n°2002750
babylon64
Posté le 18-06-2010 à 13:24:53  profilanswer
 

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
 
 
 
 

n°2002753
SuppotDeSa​Tante
Aka dje69r
Posté le 18-06-2010 à 13:35:32  profilanswer
 

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 !
mood
Publicité
Posté le 18-06-2010 à 13:35:32  profilanswer
 

n°2002759
babylon64
Posté le 18-06-2010 à 13:51:41  profilanswer
 

j'essaye merci pour votre patience

n°2002811
SuppotDeSa​Tante
Aka dje69r
Posté le 18-06-2010 à 16:08:21  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  textbox et feuille

 

Sujets relatifs
Générer une feuille de synthèse sous ExcelVBA feuille active
VB : Insérer le contenu d'un textbox dans une page webExporter une feuille dans un autre classeur selon le nom de la feuille
Aide d'affichage de données dans textboxProblème feuille de style CSS
macro permettant de créer un nombre de feuille suivant une celluleExcel: Macro pour créer un TCD sur une autre feuille?
[Résolu] Perte de feuille de style sur changement de pageInitialisation des TextBox d'une feuille en VB6
Plus de sujets relatifs à : textbox et feuille


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR