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

C Discussion :

Problème de macro


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Par défaut Problème de macro
    Bonjour,

    j'ai un souci avec une macro,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #define SET_CUR_NB(smu) \
    { \
    	(*(Msg_Cur[##smu - 1].Cursor1Visibility)) = Kernel1_Y.root_CURSOR0##smu[0]; \
    	(*(Msg_Cur[##smu - 1].Cursor1Index))	  = Kernel1_Y.root_CURSOR0##smu[1]; \
    	(*(Msg_Cur[##smu - 1].Cursor1PositionX))  = Kernel1_Y.root_CURSOR0##smu[2]; \
    	(*(Msg_Cur[##smu - 1].Cursor1PositionY))  = Kernel1_Y.root_CURSOR0##smu[3]; \
    	(*(Msg_Cur[##smu - 1].Cursor2Visibility)) = Kernel1_Y.root_CURSOR0##smu[4]; \
    	(*(Msg_Cur[##smu - 1].Cursor2Index))	  = Kernel1_Y.root_CURSOR0##smu[5]; \
    	(*(Msg_Cur[##smu - 1].Cursor2PositionX))  = Kernel1_Y.root_CURSOR0##smu[6]; \
    	(*(Msg_Cur[##smu - 1].Cursor2PositionY))  = Kernel1_Y.root_CURSOR0##smu[7]; \
    	(*(Msg_Cur[##smu - 1].Cursor3Visibility)) = 0; \
    	(*(Msg_Cur[##smu - 1].Cursor4Visibility)) = 0; \
    	(*(Msg_Cur[##smu - 1].Cursor5Visibility)) = 0; \
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (i=1; i<7; i++)
    		SET_CUR_NB(i);
    Il me dit que root_CURSOR0i n'appartient pas à la structure Kernel1_Y ce qui est vrai !
    mais moi je voudrais qu'il remplace i par sa valeur ! pour avoir root_CURSOR01, root_CURSOR02 etc ...
    Il faut faire comment ?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    "i" est une variable d'un certain type, qui peut être modifiée, lue, etc... et qui n'a de signification que lors de la compilation et lors de l'exécution.

    Par contre, la résolution des #define se fait avant même la compilation, c'est le préprocesseur qui s'occupe de cela. Pour lui, "i" n'est qu'un mot, qui n'a pas de signification spécifique. Tu ne peux donc pas remplacer "i" par sa valeur puisqu'il ne possède aucune valeur (c'est "juste" un mot).

    En clair, ta méthode ne peut pas fonctionner avec une boucle. Par contre, tu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET_CUR_NB(1);
    SET_CUR_NB(2);
    SET_CUR_NB(3);
    ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Par défaut
    c'est pas faux! merci

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

Discussions similaires

  1. Problème de macro
    Par Zorko dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2007, 18h15
  2. [Macro] problème de macro
    Par pouii dans le forum IHM
    Réponses: 2
    Dernier message: 02/05/2007, 13h58
  3. [VBA]Problème de macro et de dimension.
    Par Invité dans le forum Général VBA
    Réponses: 2
    Dernier message: 26/04/2007, 11h50
  4. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24
  5. [VBA-E] Problème activation macro
    Par kamshaa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2007, 17h02

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