dans cette partie nous allons voir comment fonctionne les variables dans Excel VBA . nous allons voir comment déclarer ou Crée une Variable, comment afficher le contenue d’une variable. comment effectuer des calcules grâce au variable.
1 Excel une variable c’est quoi ?
une variable c’est comme un post-it ou nous allons placer une information dessus.
par exemple sur la post-it bleu nous allons afficher un phrase comme “ Apprendre Excel VBA avec Daniel sur la chaine de Rein c’est Génial”.
et quand quelque viens chez vous et vous demmande he sais tu ou je peux trouver un cours d’excel VBA.
vous allez dire oui regarde sur le post-it bleu et en language VBA ça ce traduit comme suite.
postit_bleu = “apprendre excel vba avec daniel sur la chaine de rien c’est génial”
range(“a1”)=postit_bleu
donc au lieu de devoir écrire le texte à chaque fois nous allons seulement placer le contenue dans une variable et par la suite nous allons faire appel à la variable.
2 Déclarer une varialbe
si nous savons quel type de contenue une variable va avoir il faut mieux la déclaré selon le type de contenue et cela nous allons faire pour réduire la mémoire qu’Excel va utiliser et ainsi éviter que le code devient trop lourd et qui risque donc de ralentir notre petit programme.
et je vous conseille de toujour bien déclarer vos variable.
mais comment est-ce qu’il faut déclarer une variable.
c’est asser simple vous allez voir. dans notre exemple de post-it nous savons qu’il contient que du texte et dans le monde de la programmation du texte ça se nomme string et donc nous allons déclarer notre varialbe comme suite:
dim postit_bleu as string.
postit_bleu = “apprendre excel vba avec daniel sur la chaine de rien c’est génial”
range(“a1”)=postit_bleu
lé nous allons voir quelque type possible.
String | Texte exemple “un simple texte” |
Integer | Chiffre exemple 1234567890 |
date | date exemple 14/01/2018 |
Boolean | Vrai — Faux |
double | chiffre avec virgule exemple 0,5165464 |
Currency | de la money 1,26€ |
3 Calculé avec les variables
désormais nous allons voir comment nous pouvons utiliser des varialbes pour le calcule. nous allons déclaré 3 varialbe
Sub test()
Dim H As Integer
Dim L As Integer
Dim R As Integer
H = Sheets(« feuil1 »).Range(« a1 »).Value
L = Sheets(« feuil1 »).Range(« a2 »).Value
R = H * L
MsgBox (« la hauteur de la salle est » & H & « m et la longeure est de » & L & « m qui nous donne une surface total de » & R & « m² »)
End Sub
ici quelque chose de particulier nous n’avons pas définit la hauteur et la largeur dans le code mais nous avons fait une référence à une cellule. et donc nous avons rendu notre code un peux plus dynamique car un utilisateur peut indiquer la hauteur et la largeur depuis des cellules et le résultat changera selon la valeur des cellules.
3 Facilité le codage avec les variables.
désormais nous allons voir comment rendre un eviter les répétition de code grâce aux variables
Private Sub CommandButton1_Click()
Dim i As Integer
i = Range(« k1 »)
Range(« a » & i) = Range(« a1 »)
Range(« B » & i) = Range(« b1 »)
Range(« C » & i) = Range(« c1 »)
End Sub
ici quand nous allons changer le chiffre dans K1 alors nous allons changer la ligne ou nous allons placer nos informations et ce n’est pas tout car nous pouvons aussi automatiquement changer la valeur de la variable.
Range(“k1”)= i + 1
4 La portée des variables.
il faut savoir qu’il y a 3 portée pour une variable. il chaque portée à sa propre utilité.
la première est la portée de la procédure.
c’est celle que nous avons utilisé pour l’instant
c’est à dire entre un sub () et un end sub, et donc une fois que la procédure est terminée la variable disparaît
c’est à dire que si nous avons 2 procdure
sub test1 ()
dim texte as string
texte = “bonjour”
msgbox texte
end sub
sub test2()
msgbox texte
end sub
nous allons voir que dans la première procédure elle s’affiche mais pas dans le second.
procédure privé.
nous allons devoir la rendre privé c’est à dire qu’il faut la retirer de la première procédure et désormais toute modification faite dans une procédure à la variable sera aussi visible dans les autres procedure.
par contre si je vais sur un autre module ben la elle ne s’affiche pas.
les procedure publique.
une procédure publique sera utilisé partout dans le projet dans tous les modules.
Bonjour,
depuis des jours je galère afin de mettre une textbox au format monétaire.
Je veux intégrer par exemple 12.50 dans ma textbox pour que ça me donne ensuite 12.50€ dans la textbox et dans ma feuille excel au format monétaire.
Voila ce que j’ai rentré dans mon userform:
Sub varibales ()
‘Déclarations des variables prix
Dim px_A As Currency
‘Valeurs des variables prix
px_A = Textbox8
End Sub
Private Sub TextBox8_AfterUpdate()
TextBox8.Value = Format(TextBox8.Value, « 0.00€ »)
End Sub
Private Sub TextBox8_Enter()
If TextBox8 = « NN€ » Then
TextBox8 = « »
End If
End Sub
Private Sub TextBox8_Exit(ByVal cancel As MSForms.ReturnBoolean)
If TextBox8 = « » Then
TextBox8 = « NN€ »
End If
End Sub
Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 43 And KeyAscii < 58)) Then
KeyAscii = 0
End If
End Sub
Private Sub CommandButton1_Click()
If TextBox1 = "" Or TextBox1 = "JJ/MM/AAAA" Or TextBox2 = "" Or ComboBox1 = "" Or ComboBox4 = "" Or TextBox4 = "" Then
MsgBox ("Les informations essentielles du formulaire ne sont pas connues!")
Else
If Sheets("Tableau de contrats").Range("B3") = "" Then
Sheets("Tableau de contrats").Range("B3") = TextBox1
Else
Sheets("Tableau de contrats").ListObjects(1).ListRows.Add
End If
dlt = Sheets("Tableau de contrats").Range("B10000").End(xlUp).Row
TextBox1 = Format(TextBox1, "MM/DD/YYYY")
Sheets("Tableau de contrats").Range("b" & dlt) = TextBox1.Value
Sheets("Tableau de contrats").Range("c" & dlt) = TextBox2
Sheets("Tableau de contrats").Range("d" & dlt) = ComboBox1
Sheets("Tableau de contrats").Range("i" & dlt) = ComboBox4
Sheets("Tableau de contrats").Range("s" & dlt) = TextBox4
Sheets("Tableau de contrats").Range("t" & dlt) = TextBox5
Sheets("Tableau de contrats").Range("u" & dlt) = TextBox6
Sheets("Tableau de contrats").Range("v" & dlt) = TextBox7
Sheets("Tableau de contrats").Range("x" & dlt) = TextBox8
Sheets("Tableau de contrats").Range("z" & dlt) = TextBox10
Sheets("Tableau de contrats").Range("ab" & dlt) = TextBox12
Sheets("Tableau de contrats").Range("ad" & dlt) = TextBox14
Sheets("Tableau de contrats").Range("ae" & dlt) = TextBox15
Sheets("Tableau de contrats").Range("ag" & dlt) = TextBox17
Sheets("Tableau de contrats").Range("ah" & dlt) = TextBox18
Sheets("Tableau de contrats").Range("aj" & dlt) = ComboBox5
Sheets("Tableau de contrats").Range("ak" & dlt) = TextBox20
Sheets("Tableau de contrats").Range("am" & dlt) = TextBox22
Sheets("Tableau de contrats").Range("an" & dlt) = TextBox23
Sheets("Tableau de contrats").Range("ap" & dlt) = TextBox25
Sheets("Tableau de contrats").Range("aq" & dlt) = TextBox26
End If
Pourriez-vous m'aider?
Bien à vous!