Sub test()
Dim cel As Range
Set cel = Range("z1")
cel.Value = cel.Value + 1
Range("b2").Value = Chr(cel)
If cel.Value = 90 Then cel.Value = 64
End Sub
Comme vous pouvez le voir dans le code, dans la cellule Z1 j'ai inscrit 64. Maintenant, au lieu d'avoir 64 dans une cellule, j'aimerais inscrire ce nombre au travers d'une variable (Long). Est-ce possible?
Re : Affecter une variable Long au lieu d'un nombre dans une cellule
Bonjour,
Ce serait bien si tu avais pris soin de définir ce que tu tentes
d'effectuer comme travail. Cela aide à te suggérer un code plus
approprié le cas échéant.
Comme la variable ne peut pas prendre des valeurs au-dessus
de 255, Integer est plus approprié que Long pour le type de variable.
VB:
Sub test()
Dim MyVar As Integer, Cel As Range
'Définir la valeur de ta variable MyVar
MyVar = "???"
Set Cel = Range("z1")
Cel.Value = Cel.Value + 1
'Code Ascii varie entre 0 et 255
If Cel.Value >= 0 And Cel.Value < 256 Then
Range("b2").Value = Chr(Cel.Value)
If Cel.Value = 90 Then Cel.Value = MyVar
End If
End Sub
Non, il faut laisser tomber Range("z1") et mettre à la place Dim num% - num = 64 ou quelque chose du genre. Et que celui-ci soit pris en considération dans Chr(num).
Re : Affecter une variable Long au lieu d'un nombre dans une cellule
Bonjour Dranreb, Habitude,
@Dranreb: désolé mais, avec l'exemple que vous avez donné, la cellule B2 reste à A; il n'y a pas d'incrémentation.
En mettant For Next, ça part directement à Z. Il faudrait faire en sorte qu'à chaque clic, une lettre s'incrémente.
Re : Affecter une variable Long au lieu d'un nombre dans une cellule
Bonjour à tous,
Si j'ai bien compris, on peut mémoriser dans le nom défini mem :
Code:
Sub test()
If IsError([mem]) Then ThisWorkbook.Names.Add "mem", 64
ThisWorkbook.Names.Add "mem", [mem] + 1
If [mem] = 91 Then ThisWorkbook.Names.Add "mem", 65
MsgBox Chr([mem]) 'pour tester
End Sub
Re : Affecter une variable Long au lieu d'un nombre dans une cellule
Re,
Petites améliorations :
Code:
Sub test()
'le nom créé est invisible...
With ThisWorkbook.Names
If IsError([mem]) Then .Add "mem", 64
.Add "mem", [mem] + 1, False
If [mem] = 91 Then .Add "mem", 65, False
End With
MsgBox Chr([mem]) 'pour tester
End Sub
au cas où un petit malin veuille bricoler le nom mem...
Edit : avec IIf on gagne une ligne :
Code:
Sub test()
'le nom créé est invisible...
With ThisWorkbook.Names
If IsError([mem]) Then .Add "mem", 64
.Add "mem", IIf([mem] = 90, 65, [mem] + 1), False
End With
MsgBox Chr([mem]) 'pour tester
End Sub