afficher des données dans des cellules [VBA-E] - VB/VBA/VBS - Programmation
Marsh Posté le 27-04-2006 à 18:10:17
Bonjour Bad Bond
Bonjour à tous
Je suppose que le tableau est sur la feuille en "A4 à C4"
Je te propose après la ligne de code (à la fin)
"client = InputBox("entrer le nom du client" )" :
Range("A4" ).select
Activecell.offset(0,0).value = client '=> met le nom du client dans A4
Activecell.offset(0,1).value = prime '=> met le montant prime dans B4
Activecell.offset(0,2).value = prixTTC'=> met le montant TTC dans C4
Bien sur ce tableau se trouve sur le feuille du bouton, sinon il faut la sélectionner
Cordialement
Marsh Posté le 27-04-2006 à 18:50:20
ok merci
j'ai modifié un peu le code à mon gout, je sais pas si j'ai bien fait
mais mainetant j'aimerai bien pouvoir afficher à la suite plusieurs clients et leur montant de prime etc etc...
c'est à dire, qu'on est dans le cas où l'utilisateur d'excel saisie plusieurs clients à la suite
Marsh Posté le 27-04-2006 à 21:06:41
Re
On reprend le code après range("A4" ).select, tu écris :
Selection.Range("a65536" ).End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Je suppose qu'il y a plus court, mais cela fonctionne
Cordialement
Marsh Posté le 27-04-2006 à 22:31:38
merci bien
mais j'ai du mal comprendre
car ça me fait une erreure après...
Marsh Posté le 27-04-2006 à 22:44:47
koike en fait je pense avoir trouvé une parade à mon problème
voilà tout mon code :
Citation : Sub CommandButton1_Click() |
merci pour l'aide
mais je voudrai faire autre chose, redimensionner des collones en fonction du texte et mettre une couleur d'arrière plan dans certaines cellules, comment faire ??
merci d'avance !!
Marsh Posté le 28-04-2006 à 09:18:00
Salut Bad Bond,
En lisant ton code, et en voyant le nombre de données à collecter et leur type particulier, je mettrais en place un userform à ta place. J'ai une tendance à me méfier des inputbox qui ne renvoi que des strings. Le userform te permettrais de vérifier le type de données saisies par l'utilisateur.
Pour ton histoire de redimensionement de cellule et de mise en place de couleur, je te conseille d'utiliser l'enregistreur de macro. Tu obtiendra ainsi la base sur les fonctions que tu cherches et les codes des couleurs dont tu as besoin.
Si tu n'arrives pas à arranger le code transmis par l'enregistreur de macros, ce code nous permettra de savoir sur queles cellules agir ce qui sera bien plus simple.
pour info :
Code :
|
@+
Marsh Posté le 28-04-2006 à 11:41:13
ok d'accord je vais essayer l'enregistreur de macro
mais j'ai pas compris le userform, je m'y connais rien en VB
si tu pourrais développer stp !!
Marsh Posté le 28-04-2006 à 14:03:31
ouh la j'ai aussi des soucis au niveau des calculs
ils m'affichent pas le bon résultat
Marsh Posté le 28-04-2006 à 17:06:23
Re Bad Bond
Pour les Userform, il faut que tu regardes dans VBA. tu click droit sur ton projet / inserer userform.
Ensuite dans la boîte à outils tu regardes, il y a différents contrôles.
Ceux qui vont t'interesser son les textbox pour faire saisir des données à l'utilisateur. Les checkbox pour les cases oui/non comme pour ton hoistoire de conduite accompagnée et les commandbutton pour valider tes actions.
En testant un peu ce que tu vas trouver, en regardant dans l'aide VBA et grâce à l'ami google tu vas pouvoir te faire une idée.
Pour tes calculs dur de t'aider avec si peu d'éléments.
@+
Marsh Posté le 28-04-2006 à 18:37:03
ok watashi
mais en fait l'userform ça fait en sorte ke l'utilisateur sélectionne dans des listes ou je me trompe ?
sinon persone n'a une idée sur l'erreure avec les calculs ??
Marsh Posté le 28-04-2006 à 18:45:20
Pas seulement,
Un userform et une boite de dialogue vide.
Tu "dessines" dedans les object dont tu as besoin textbox, listbox, checkbox, combobox, commandbuttons ....
Ensuite avec le code tu determine ce qu'il doit ce passer. Cequi est autorisé ou non, etc...
Pour tes calculs, il faut nous donner un peu plus de détail :
Le calcul (ton code) et le résultat obtenu. Avec ça on pourra te guider.
@+
Marsh Posté le 29-04-2006 à 09:37:59
Bonjour a tous,
je debute sur vba et aurais besoin d'aide pour programmer une macro.
je vous explique:
j'ai feuil1 (qui est ma source de donnees) avec en colonne A les noms de 9 sites, en colonne B des numeros de serie et en colonne D des quantites.
Debut de liste ligne 2.
Il y a des doublons car le meme numero de serie peut apparaitre dans chaque site.
Je souhaite renvoye les quantites sur une nouvelle feuille deja existante (feuil2) mais en separant les noms de sites par colonne.
Debut de liste ligne 5.
Cela m'evite les doublons.
le numero de serie est en colonne A, les quantites s'inscrivent dans 9 colonnes (F a N) correspondant aux 9 sites que je separe.
La macro doit donc garder les quantites en fonction du site mais aussi du numero de serie.
En plus si un nouveau numero de serie apparait dans feuil1, la macro doit pouvoir l'inserer automatiquement dans feuil2.
Et si un numero de serie disparait dans feuil1, la valeur 0 doit apparaitre dans feuil2.
Si vous pouviez m'aider, merci.
Marsh Posté le 29-04-2006 à 10:47:06
Bonjour à tous
Je pense que le code ajouté :
Range("A2" ).Select
ActiveCell.Offset(0 + i, 0).Value = client
ActiveCell.Offset(0 + i, 1).Value = prime
ActiveCell.Offset(0 + i, 2).Value = prixTTC
te fait sauter une ligne, à vérifier.
Par contre, la prochaine fois que le fichier s'ouvrira et qu'un utilisateur va saisir un nouveau client, cela viendra écraser ce qui a été enregistré auparavant.
Tu écris :
Range("A1" ).select
Selection.Range("a65536" ).End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Activecell.offset(0,0).value = client
Activecell.offset(0,1).value = prime
Activecell.offset(0,2).value = prixTTC
Pour que cela fonctionne à la toute première saisie, tu écris en ligne 1 des en-têtes : dans A1 tu écris "Client, B1 Prime, C1....
ensuite les saisies suivantes viendront se positionner sur A2, A3, ......
La ligne que donne Watashi : Columns("A:A" ).EntireColumn.AutoFit peut être simplifiée par : Columns("A:A" ).AutoFit, et celle ci est mise à la fin des saisies cad après "Loop".
Pour l'erreur de calcul, je pense que la ligne :
prime = prime + (0.9 * prime) * B
B est déclaré, mais ne serait ce pas plutôt "bonus" ? et qu'il faut déclarer à sa place
Cordialement
Marsh Posté le 29-04-2006 à 12:31:36
ok merci eric
mais en fait en faisant pas à pas, l'erreure de calcul commence dès le calcul de la majoration
voilà mon code pour l'instant
je ne comprends pas mon erreur :
Citation : Sub CommandButton1_Click() |
Marsh Posté le 29-04-2006 à 15:07:35
Bonjour Bad Bond
Bonjour à tous
Essaie le code que j'ai aménagé :
Sub CommandButton1_Click()
Dim client As String
Dim nbacc As Integer
Dim CA As Integer
Dim age As Integer
Dim optiontr As Integer
Dim i As Integer
Dim montant As Single
Dim maj1 As Integer
Dim maj2 As Integer
Dim prime As Integer
Dim bonus As Single
Dim prixTTC As Integer
Range("A1" ).Select
Application.ScreenUpdating = False
If ActiveCell.Value = "" Then
Cells(1, 1).Value = "Nom du client"
Cells(1, 2).Value = "Montant de la prime"
Cells(1, 3).Value = "Option tous risques"
Cells(1, 4).Value = "Age du client"
Cells(1, 5).Value = "Conduite accompagnée"
Cells(1, 6).Value = "Nbr d'accident l'année précédente"
Cells(1, 7).Value = "Prix TTC"
End If
Selection.End(xlDown).Activate
ActiveCell.Offset(1, 0).Select
i = 0
client = InputBox("entrer le nom du client" )
If client = "" Then
Exit Sub
End If
Do While client <> ""
montant = InputBox("montant prime correspondant à la zone géographique et la puissance fiscale" )
optiontr = MsgBox("option tous risques", vbYesNo)
optiontr02 = MsgBox("option tous risques", vbYesNo)
age = InputBox("age du client" )
CA = MsgBox("conduite accompagnée", vbYesNo)
CA02 = MsgBox("conduite accompagnée", vbYesNo)
nbacc = InputBox("nombre d'accident l'année précédente" )
If optiontr = vbYes Then
maj1 = montant * 0.5
Else
maj1 = 0
End If
If age < 25 And CA = vbNo Then
maj2 = montant * 0.1
Else
maj2 = 0
End If
prime = montant + maj1 + maj2
If nbacc = 0 Then
bonus = -0.2
Else
If nbacc = 1 Then
bonus = 0.1
Else
If nbacc = 2 Then
bonus = 0.3
Else
bonus = 0.5
End If
End If
End If
prime = prime + ((0.9 * prime) * bonus)
prixTTC = prime + (prime * 0.2)
MsgBox ("la prime annuelle TTC (en euro) est de " & prixTTC)
ActiveCell.Offset(0 + i, 0).Value = client
ActiveCell.Offset(0 + i, 1).Value = prime
If optiontr = 6 Then
ActiveCell.Offset(0 + i, 2).Value = "Oui" ' si vrai
Else
ActiveCell.Offset(0 + i, 2).Value = "Non" ' si faux
End If
ActiveCell.Offset(0 + i, 3).Value = age
If CA = 6 Then
ActiveCell.Offset(0 + i, 4).Value = "Oui" ' si vrai
Else
ActiveCell.Offset(0 + i, 4).Value = "Non" ' si faux
End If
ActiveCell.Offset(0 + i, 5).Value = nbacc
ActiveCell.Offset(0 + i, 6).Value = prixTTC
client = InputBox("entrer le nom du client " )
If client = "" Then
Exit Sub
End If
i = i + 1
Loop
End Sub
Si pb n'hésite pas
Cordialement
Marsh Posté le 30-04-2006 à 09:11:21
Salut,
J'ai toujours besoin d'aide je ne m'en sors pas.
Pouvez vous me filer un coup de pouce.
ca serait vraiment super.
Merci
Marsh Posté le 30-04-2006 à 11:14:41
merci eric
mais il me fait une erreure dans les première lignes :
ActiveCell.Offset(1, 0).Select
Marsh Posté le 01-05-2006 à 08:10:00
Bonjour Bad Bond
Bonjour à tous
Oups! A la place de :
Selection.End(xlDown).Activate
écris :
Selection.Range("A65536" ).End(xlup).activate
Cordialement
Marsh Posté le 01-05-2006 à 08:12:56
Bonjour ptitity
Pour de l'aide, crées un nouveau sujet, comme cela tout le monde verra et pourra te répondre
Cordialement
Marsh Posté le 01-05-2006 à 12:00:10
eric455 a écrit : Bonjour Bad Bond |
merci
maintenant le calcul a l'air de marcher
étrange
ke là il calcul correctement et pas avant !!
Marsh Posté le 27-04-2006 à 16:24:55
Yo,
j'ai un problème
voilà, j'aimerai afficher les données inscrites pas l'utilisateur dans un tableau excel
c'est dur à expliquer mais voilà l'énoncé et ce ke j'ai commencé à faire...
http://badbond.free.fr/algo.rar
comment faire ??
merci d'avance
Message édité par Bad Bond le 27-04-2006 à 19:03:11
---------------
recordman du jeu du screenshot : Okiron en 12Secondes