Bonjour,
Rendons à César... Euh à thev ce qui lui appartient car c'est lui qui au terme d'un raisonnement compliqué, a introduit le :
j = ChiffreMois - 1
Je n'ai fait que reprendre son exemple bien que je ne soit pas très favorable à ce type de codage.
Il faudrait une longue explication pour en démontrer les avantages et les inconvénients.
Disons simplement que ce -1 est lié à l'utilisation d'offset que personnellement je n'utilise quasiment jamais.
En effet pourquoi quand on veut parler d'une cellule faire référence à une autre cellule puis calculer un décalage ?
Cela donne un codage flou ou on ne sait jamais de quoi veut parler l'auteur.
Je suppose que cette habitude est née de l'usage très répandu de son équivalent DECALER par les vieux formuleux ou formulistes. Si cette habitude est saine et indispensable dans les formules, elle est en revanche plus discutable en VBA...
Dans la version de CalendrierVG on pourrait très bien se passer de cette complication en écrivant :
Private Sub ChiffreMois_Change()
Dim i As Integer, j As Integer
MyDate = DateValue("1" & " " & ChiffreMois & " " & Year(Date))
LabelMois = "Mois de : " & Format(MyDate, "mmmm yyyy")
j = ChiffreMois
For i = 1 To 31
Me.Controls("Label" & i) = Cells(i + 2, j * 2 - 1)
Me.Controls("TextBox" & i) = Cells(i + 2, j * 2)
Me.Controls("TextBox" & i).BackColor = Cells(i + 2, j * 2).Interior.Color
Next i
End Sub
de même dans le dernier classeur (CalendrierVG sans TB )
On pourrait écrire :
Private Sub ShowMois()
Dim i As Integer, j As Integer
MyDate = DateValue("1" & " " & Me.Tag & " " & Year(Date))
LabelMois = "Mois de : " & Format(MyDate, "mmmm yyyy")
LabelMois = Application.Proper(LabelMois)
j = Me.Tag
For i = 1 To 31
Me.Controls("Label" & i) = Cells(i + 2, j * 2 - 1)
Me.Controls("TextBox" & i) = Cells(i + 2, j * 2)
Me.Controls("TextBox" & i).BackColor = Cells(i + 2, j * 2).Interior.Color
Next i :??
End Sub
Ce qui donne un code très clair bien plus court et parfaitement compréhensible...
Pour ce qui est de l'utilisation des variables "Integer" ou "String" je te renvoie au cours Excel ou cela est parfaitement détaillé...
Je dirais simplement que l'utilisation d'Integer est là encore une habitude d'ancien programmeur économe des ressources de sa machine. Aujourd'hui dans ce monde de gaspillage effréné on lui préfère bien souvent "Long" ce qui évite d'avoir à se demander si la feuille de calcul utilisera plus de 32000 lignes ou pas...
A+