IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

tab(i++)="string" en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut tab(i++)="string" en VBA
    Bonjour,

    Tout est dit dans le titre, j'aimerai faire tab(i++)="une chaine de caractère"

    J'ai un tableau (ou je veux mettre plusieurs string) et j'avance dans ce tableau via une variable Index.
    J'ai déjà été dessus quand j'ai appris que ++ ne fonctionne pas en vba...
    Donc j'ai utilisé cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Incr(IndexTabDeviceCfg As Long)
         IndexTabDeviceCfg = IndexTabDeviceCfg + 1
         Incr = IndexTabDeviceCfg
    End Function
    Dans ma tête cela devait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TbForDeviceCfg(Incr(IndexTabDeviceCfg)) = "# " & CurrentName
    Mais l'incrémentation ne se passe pas.

    Par contre si je fais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TbForDeviceCfg(IndexTabDeviceCfg = Incr(IndexTabDeviceCfg)) = "# " & CurrentName
    Cette fois l'incrémentation se passe bien mais malheureusement le string n'est pas mis dans le tableau...


    Est ce que vous auriez une solution ou une idée de comment faire ?

    Je vous remercie d'avance !

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Il faut que tu réalises une boucle, VB est bien plus verbeux que ça

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 to 15
      tab(i) = "...."
    Next
    Mais tu as aussi les boucles Do Loop/Until/While

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Function Incr(IndexTabDeviceCfg As Long)
    // passage par valeur + fonction de type void en c++ : il n'y a pas de valeur de retour ni de modification de index???

    il faudrait corriger par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function Incr(byref IndexTabDeviceCfg As Long) ' passage par ref 
    IndexTabDeviceCfg = IndexTabDeviceCfg + 1
    End Function
     
    'puis 
    Incr(IndexTabDeviceCfg)
    TbForDeviceCfg(IndexTabDeviceCfg) = "# " & CurrentName
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Function Incr(IndexTabDeviceCfg As Long) as long ' type du retour de la fonction
    incr =  = IndexTabDeviceCfg + 1  'valeur retourner
    End Function
     
    'puis
    TbForDeviceCfg(incrIndexTabDeviceCfg) )= "# " & CurrentName
    je commence a apprendre le c++, le plus dur est de ne pas mettre de ";" partout quand je reviens en vba

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TbForDeviceCfg(IndexTabDeviceCfg = Incr(IndexTabDeviceCfg)) = "# " & CurrentName
    donne
    - IndexTabDeviceCfg = Incr(IndexTabDeviceCfg) : vrai ou faux … 1/0
    la chaine est affectee a tb|1 ou de 0]

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur avant-vente

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut
    Bonjour,

    Sogedic si tu étais à coté de moi je te ferais un calin !

    Déjà bien vu pour ma condition qui faisait que j'écrivais dans la ligne 1 de mon tableau parce que ma condition était à true...

    Ensuite j'ai pas bien compris ça : (avec les deux égales)
    incr = = IndexTabDeviceCfg

    J'ai modifié un peu ta solution mais ça marche maintenant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Incr(ByRef IndexTabDeviceCfg As Long) As Long ' type du retour de la fonction
    Incr = IndexTabDeviceCfg + 1  'valeur retourner
    IndexTabDeviceCfg = Incr
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TbForDeviceCfg(Incr(IndexTabDeviceCfg)) = "# " & CurrentName

    J'ai remis par Référence (mais d'ailleurs c'est pas par référence de base ?) parce que sinon ma variable IndexTabDeviceCfg était incrémenté mais juste dans ma ligne d'affectation du string dans le tableau. Comme ça j'incrémente la variable en général dans mon main.

    En tout cas un grand merci à toi !

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Du coup pour essayer d'avoir un câlin, je propose de carrément implémenter le inc (que je connais) de Delphi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Incr(ByRef IndexTabDeviceCfg As Long, Optional Pas As Long = 1) As Long ' type du retour de la fonction
    Incr = IndexTabDeviceCfg + Pas  'valeur retourner
    IndexTabDeviceCfg = Incr
    End Function
    Ça peut-être pratique comme façon de faire, du coup je le note, merci à vous deux.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/11/2009, 15h14
  2. ORA-01756: quoted string not properly terminated
    Par hottnikks_79 dans le forum SQL
    Réponses: 14
    Dernier message: 22/05/2007, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo