Remplissage de cellules depuis userform (par rapport à une date)

lookdogs

XLDnaute Nouveau
Re bonjour,

Je refais appel à vous pour un problème de formules.

Tout est expliqué dans le classeur en pièces jointes

Merci d'avance

a+:D
 

Pièces jointes

  • ESSAI GESTION EMPRUNT PAR USERFORM.zip
    17.8 KB · Affichages: 74

job75

XLDnaute Barbatruc
Re : Remplissage de cellules depuis userform (par rapport à une date)

Bonjour lookdogs,

(Pouvez-vous m'expliquer les formules et non me les faire
merci)

Expliquer sans faire je ne sais pas faire ;)

Le code du bouton Valider de l'USF :

Code:
Private Sub CommandButton1_Click() 'Valider
Dim orga As Byte, mois As Byte
orga = ComboBox2.ListIndex + 1
mois = ComboBox3.ListIndex + 1
If orga = 0 Then ComboBox2.DropDown: Exit Sub
If mois = 0 Then ComboBox3.DropDown: Exit Sub
With Sheets("Emprunt").Range("B11").Offset(mois, 2 * (orga - 1))
  .Value = Val(Replace(TextBox1, "," , "."))
  .Offset(, 1) = Val(Replace(TextBox2, "," , "."))
End With
Unload Me
End Sub

Le code est facile à comprendre, mais tout dépend de votre niveau en VBA. N'hésitez pas à dire ce qui vous bloque.

Il restera bien sûr à contrôler la validité de ce qui est entré dans les 2 TextBox.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Remplissage de cellules depuis userform (par rapport à une date)

Re,

Finalement, le mieux est de contrôler en même temps les TextBox :

Code:
Private Sub CommandButton1_Click() 'Valider
Dim orga As Byte, mois As Byte, v1 As Double, v2 As Double
orga = ComboBox2.ListIndex + 1
mois = ComboBox3.ListIndex + 1
If orga = 0 Then ComboBox2.DropDown: Exit Sub
If mois = 0 Then ComboBox3.DropDown: Exit Sub
v1 = Val(Replace(TextBox1, ",", "."))
v2 = Val(Replace(TextBox2, ",", "."))
If v1 = 0 Then TextBox1 = "": TextBox1.SetFocus: Exit Sub
If v2 = 0 Then TextBox2 = "": TextBox2.SetFocus: Exit Sub
With Sheets("Emprunt").Range("B11").Offset(mois, 2 * (orga - 1))
  .Value = v1
  .Offset(, 1) = v2
End With
Unload Me
End Sub

A+
 

lookdogs

XLDnaute Nouveau
Re : Remplissage de cellules depuis userform (par rapport à une date)

Bonjour,

Merci beaucoup pour votre aide, je commençais à me tirer les cheveux.

ça marche super bien.

En faite, je commence juste à m'intéresser au VBA et pour être franc je ne comprends pratiquement rien à la formule.

Pouvez vous m'expliquer le pourquoi du comment!!!!!?

Je sais, je suis embêtant mais sinon je vais tout le temps vous demander et j'en serais au même point.

Merci encore a +

Cordialement benjamin
 

job75

XLDnaute Barbatruc
Re : Remplissage de cellules depuis userform (par rapport à une date)

Bonjour lookdogs,

Comme promis, voici les explications mises en commentaires :

Code:
Private Sub CommandButton1_Click() [COLOR="Red"]'Bouton Valider[/COLOR]
[COLOR="red"]'Déclaration des variables : As Byte nombre de 0 à 255, Double : nombre quelconque[/COLOR]
Dim orga As Byte, mois As Byte, v1 As Double, v2 As Double
[COLOR="red"]'La propriété ListIndex renvoie -1 si aucune valeur de la liste déroulante n'a été sélectionnée
'sinon renvoie le numéro de la ligne sélectionnée en commençant par 0[/COLOR]
orga = ComboBox2.ListIndex + 1
mois = ComboBox3.ListIndex + 1
[COLOR="red"]'Si la valeur est 0, la méthode DropDown affiche la liste déroulante, Exit Sub met fin à la macro[/COLOR]
If orga = 0 Then ComboBox2.DropDown: Exit Sub
If mois = 0 Then ComboBox3.DropDown: Exit Sub
[COLOR="red"]'La fonction Val renvoie toujours un nombre, exemples : Val("a")=0, Val("")=0, Val("2,5")=2, Val("2.5")=2.5[/COLOR]
v1 = Val(Replace(TextBox1, ",", ".")) [COLOR="red"]'la virgule est remplacée par le point pour obtenir un nombre en VBA[/COLOR]
v2 = Val(Replace(TextBox2, ",", "."))
[COLOR="red"]'Si la valeur est 0, TextBox1 = "" vide la TextBox1, la méthode SetFocus y place le curseur[/COLOR]
If v1 = 0 Then TextBox1 = "": TextBox1.SetFocus: Exit Sub
If v2 = 0 Then TextBox2 = "": TextBox2.SetFocus: Exit Sub
[COLOR="red"]'Offset décale la référence de la cellule B11 => vers le bas : numéro du mois, à droite : par pas de 2[/COLOR]
With Sheets("Emprunt").Range("B11").Offset(mois, 2 * (orga - 1))
  .Value = v1 [COLOR="red"]'entre dans la cellule définie le capital remboursé[/COLOR]
  .Offset(, 1) = v2 [COLOR="red"]'entre les intérêts remboursés dans la cellule à droite[/COLOR]
End With
Unload Me [COLOR="red"]'ferme l'USF (Me : c'est la feuille où se trouve le code)[/COLOR]
End Sub

Si vous désirez des informations complémentaires sur une expression, allez dans l'aide VBA (touche F1), c'est une bonne habitude à prendre.

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 336
Membres
103 821
dernier inscrit
Lorient56