Problème variables VBA

Résolu
funbreizhou Messages postés 89 Statut Membre -  
funbreizhou Messages postés 89 Statut Membre -
Bonjour,

J'ai un code à écrire de ce type là :

Sub essai()
Dim CHARA, Z As String
Dim nb As Integer

CHARA0 = ""

For nb = 1 To 5
CHARA& nb = "aa" & CHARA & (nb - 1)
Z = CHARA&(nb)
MsgBox Z
Next

End Sub

Il y a un message d'erreur lorsque je le lance :
"type declaration character does not match declared data type"

Le CHARA&nb n'est pas accepté ! Comment ça se fait ? c'est pourtant bien un STRING..
Quelqu'un a une idée ?

Merci d'avance.

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour
    1. Dans ton code CHARA est le nom d'une variable de type chaine, et ce qui est une chaine, ce n'est pas le nom de la variable mais son type (son contenu).
    En bref, tu confonds le nom de la variable et son type
    2.
    Dim CHARA, Z As String 
    déclare Z de type string, mais n'attribue pas un type a CHARA
    tu dois ecrire
    Dim CHARA as string, Z As String 
    3. Pour avoir une idée de ce qui se passe tu mets
    option explicit 
    en début de module, ce qui t'oblige a déclarer toutes les variables utilisées
    tu verras alors que CHARA0, considéré comme une nouvelle variable, n'a pas été déclarée
    quant à
    CHARA& nb, VBA ne peut pas l'interpréter, d'où le message d'erreur
    4. Une question, que veux tu que ta procedure fasse?

    bonne suite
    0
  2. funbreizhou Messages postés 89 Statut Membre 11
     
    j'ai pris en compte tes conseils :
    Sub essai()
    Dim CHARA As String, Z As String
    Dim CHARA0 As String

    Dim nb As Integer

    CHARA0 = ""

    For nb = 1 To 5
    CHARA& nb = "aa" & CHARA & (nb - 1)
    Z = CHARA&(nb)
    MsgBox Z
    Next

    End Sub

    J'ai toujours le même soucis. Je ne vois pas ce que ça change pour la déclaration de mon CHARA.
    Ce que je cherche à faire c'est concaténer les valeurs :
    CHARA1 = CHARA0 & CHARA1
    CHARA2 = CHARA1 & CHARA2
    ...
    CHARA5 = CHARA4 & CHARA 5

    Avec tous les CHARA définit publiquement par une lettre.

    de manière à avoir par exemple CHARA5 = axcy
    Mais j'ai pas compris ce que tu me disais, pour toi je ne peux pas concaténer CHARA&nb ?

    Merci de ton aide !
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    1. reprenons ton code
    CHARA & nb = "aa" & CHARA & (nb - 1)

    - le signe = permet d'affecter une valeur (celle est après le signe =) à la variable (qui est avant le signe =)
    CHARA = etc ... est correct (CHARA est une variable)
    CHARA & nb = etc ... ne l'est pas (CHARA & nb n'est pas une variable)
    - pour l'identificateur CHARA placé a droite du "=" , c'est sa valeur qui est prise en compte, valeur que tu peux concaténer avec "aa" à gauche et (nb-1) à droite avant d'affecter le résultat à la variable CHARA
    CHARA = "aa" & CHARA & (nb-1) est correct
    2. En fait, tu fais une mauvaise utilisation de l'affectation
    par exemple,
    A = 5 permet d'affecter à la variable A la valeur 5
    A = A+1, est une façon correcte d'ajouter 1 à la variable A
    3. Dans ton dernier message, les variables CHARA1, CHARA2, etc n'existent pas. L'écriture CHARA & nb placée à gauche du signe = n'est pas comprise par VBA et ne permet pas de fabriquer de nouvelles variables

    4. un code permettant de faire évoluer la variable CHARA

    CHARA = ""  
    For nb = 1 To 5  
      CHARA = "aa" & CHARA & (nb - 1)  
      Z = CHARA  
      MsgBox Z  
    Next 


    bonne suite
    0
  4. funbreizhou Messages postés 89 Statut Membre 11
     
    Ah ok !
    Je te remercie pour ton aide.
    Je vais essayer ça tout de suite

    Bonne soirée.
    0