[Résolu] Affecter une variable Long au lieu d'un nombre dans une cellule

Lone-wolf

XLDnaute Barbatruc
Bonsoir le Forum,

Code:
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?

Merci d'avance.



A+ :cool:
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Affecter une variable Long au lieu d'un nombre dans une cellule

Bonsoir Dranreb,

merci d'avoir répondu. Comme vous pouvez le voir dans la macro, les nombres vont de 64 à 90. Ce sont les caractères des lettres alphabétiques (A à Z).

Mais comment nommer cette variable, comment l'appliquer?



A+ :cool:
 

MichD

XLDnaute Impliqué
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
 

Lone-wolf

XLDnaute Barbatruc
Re : Affecter une variable Long au lieu d'un nombre dans une cellule

Bonsoir MichD,

Désolé ce n'est pas ça que je cherche à faire.

C'est changer Set cel = Range("z1") (cellule où j'ai inscrit 64), par: MyVar ou autre = 64. Ensuite,

If MyVar = 90 Then MyVar = 64. Enfin, si c'est comme cela qu'on écrit.



A+ :cool:
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Affecter une variable Long au lieu d'un nombre dans une cellule

C'est changer Set cel = Range("z1") (cellule où j'ai inscrit 64), par: MyVar ou autre = 64

Désolé, mais je ne parviens pas à saisir ce que tu veux!

Exemple : Si tu veux affecter à une variable la valeur contenue dans une cellule :

VB:
Sub Impression()
Dim MyVar As Integer

If IsNumeric(Range("Z1")) Then
   MyVar = Range("Z1")
   '..../ reste du code

End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Affecter une variable Long au lieu d'un nombre dans une cellule

Comme la variable ne peut pas prendre des valeurs au-dessus
de 255, Integer est plus approprié que Long pour le type de variable.
Tant qu'a chipoter sur le nombre d'octets occupés, plutôt Byte à ce compte là, et sur ce raisonnement !
VB:
Dim N As Byte, C As String * 1
N = 64
C = Chr$(N)
Cordialement.
 

Lone-wolf

XLDnaute Barbatruc
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.


Merci à tous les deux


A+ :cool:
 

Si...

XLDnaute Barbatruc
Re : Affecter une variable Long au lieu d'un nombre dans une cellule

salut

indépendemment de l'évènement, et Si... tu essaies ?
Code:
Sub caract()
  Dim N As Long
  For N = 1 To 1000
    If N < 129 Then Cells(N, 1) = Chr(N) Else Cells(N, 1) = ChrW(N)
  Next
End Sub
 

job75

XLDnaute Barbatruc
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
Nota : =CODE("A") renvoie 65...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
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
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Affecter une variable Long au lieu d'un nombre dans une cellule

Re,

Bien entendu si à chaque ouverture du fichier on veut redémarrer par "A", on ne mémorisera pas dans un nom défini mais dans une variable Static :

Code:
Sub test()
Static mem As Byte
mem = IIf(mem Mod 90, mem + 1, 65)
MsgBox Chr(mem) 'pour tester
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed