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
---------------
C'est dans les moments où on a les plus grands défis, qu'on doit tricher encore mieux que d'habitude. - M. Cartmanez