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 :

Macro de fusion de données


Sujet :

Macros et VBA Excel

  1. #21
    Membre actif
    Homme Profil pro
    Ingénieur PI
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur PI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut
    Je remarque que les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Const indAadSuffPerfection = indAadSuffLonguePortee + 1
    Public Const indAadSuffPrecision = indAadSuffPerfection + 1
    Public Const indAadSuffVengeance = indAadSuffPrecision + 1
    Public Const indAadSuffReaction = indAadSuffVengeance + 1
    Public Const indAadSuffDryades = indAadSuffReaction + 1
    Public Const indAadSuffMitraillage = indAadSuffDryades + 1
    Public Const indAadSuffLoups = indAadSuffMitraillage + 1
    Ont été rajoutées.
    On ne pouvait pas les supprimer alors?
    Je suis intéressé de comprendre pourquoi (histoire de vraiment comprendre la macro à 100%)


    Citation Envoyé par MattChess Voir le message
    Définir le nom et la valeur de chaque colonne et les zones de rangées en les commentant.
    Dans mon idée, les colonnes sont bien placées actuellement sur la feuille Fusion
    Pour calculer le nombre d'éléments, est ce que par exemple, E15 F15 G15 étant vide, la macro comprend donc que les cases E14 F14 G14 sont les dernières comportant des données d'entrée?
    Je pensais réaliser la fonction "lecture du stock" de cette façon.


    Citation Envoyé par MattChess Voir le message
    Vérifier si les nouveaux objets ont été correctement compris par le programme.
    J'ai tenté de vérifier la codification pour:
    Poing des Cieux Agile du Suicide.
    Il me donne un numéro ID, mais n'arrive pas à le reconnaitre derrière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ? IdObjFromProper(indObjCaC1H, indCaC1HSuppCieux, indCaC1HPrefAgile, indCaC1HSuffSuicide)
     2563 
    ? ObjToString(2563)
    L'objet n° 2563 est inconnu.
    Il m'affiche un message d'erreur:
    Je ne sais pas pourquoi.

  2. #22
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Par défaut Public Const nom = valeur ' Commentaire
    1. En informatique, on ne peut pas utiliser un nom qui n'a pas été déclaré

    Le message d'erreur est réaliste : "le préfixe 0 inconnu."

    Vous pouvez vérifier que vous avez défini le premier préfixe indCaC1HPrefSevere et le dernier indCaC1HprefDemoniaque. C'est une optimisation qui vous a évité d'avoir à déclarer toutes les constantes intermédiaires entre les deux bornes minimum et maximum de préfixe.

    Maintenant vous utilisez justement un préfixe non défini indCaC1HPrefAgile qui est un préfixe intermédiaire entre les deux bornes citées. Et comme l'optimisation a consisté à ne pas déclarer ces suffixes, indCaC1HPrefAgile n'existe donc pas et ne peut pas être utilisé lors de l'appel de la fonction IdObjFromProper(). Même problème pour le suffixe indCaC1HsuffSuicide, la constante n'a pas été définie pour faciliter l'ajout de l'objet CaC1H. Cela veut dire que l'on ne peut pas l'utiliser.

    Alors comment faire ?

    • Soit on annule l'optimisation et on décide de saisir toutes les constantes de supports, préfixes, suffixes mais cela risque d'être long...
    • Soit comme il s'agit d'un test interne temporaire, on remplace lors de l'appel IdObjFromProper() dans la fenêtre d'Exécution immédiate les constantes intermédiaires manquantes par leur numéro dans la famille en consultant manuellement la table qui les positionnent.


    Il ne faut pas perdre de vue l'idée du principe basique d'une constante. C'est donner un nom à un nombre. C'est tout. Pour faire comprendre cette association, on choisit un nom court judicieux et on commente sur la même ligne après la valeur de la constante.

    Si le nom n'a pas été défini pour faciliter l'ajout d'objet, on ne peut pas utiliser un tel nom mais on doit utiliser le nombre que la constante représenterait si elle est définie.

    Dans la fenêtre d'Exécution immédiate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? IdObjFromProper(indObjCaC1H, indCaC1HSuppCieux, 17, 18)
    303106563

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? ObjToString(303106563)
    Hand Gun1: Pg des cieux, Agile, Suicide

    Si on ne veut pas aller chercher dans la table des préfixes quel n° a le préfixe "Agile", alors il faudrait définir la constante indCaC1HPrefAgile = 17 avant de l'utiliser pour le test d'IdObjFromProper().

    Définir une constante c'est dire à VBA que je ne veux plus utiliser 17 qui n'a pas de sens. Je préfère utiliser indCaC1HPrefAgile. Si on ne dit pas à VBA que indCaC1HPrefAgile = 17, il ne peut pas le deviner. L'erreur a finalement été capturée : "Préfixe 0 inconnu".

    Ainsi à la question si on pouvait supprimer les constantes de support et suffixe d'Aad, la réponse est oui. Vous l'avez fait en version 0.6. Mais le développeur ne pouvait plus utiliser leurs noms et il était obligé de consulter la table correspondante sur la feuille "Armes à distances" pour savoir quel n° elles représentaient.

    Comme le travail de définition des constantes de Ring et Aad a été fait, on ne voit pas pourquoi le développeur se priverait de leurs noms pour tester la gestion du Stock par StockInit(). Ce n'est pas pour rien que l'on a demandé que le Stock et la Cible utilisent des objets déjà connus qui ont été complètement décrits alors que les nouveaux objets sont décrits de façon partielle.

    2. Design vs. run-time

    A votre question sur le bouton que vous ne pouvez plus déplacer, on a répondu en distinguant le mode design pour le développeur et le mode run-time pour l'utilisateur.


    • Quand vous appelez la fonction IdObjFromProper() dans la fenêtre d'Exécution immédiate, vous êtes en mode design c-a-d que vous testez une fonction en tant que développeur.
    • Quand vous cliquerez sur le bouton "Recherche des Solutions" sur la feuille, vous serez un utilisateur qui n'a même pas connaissance qu'il existe une fenêtre d'Exécution immédiate et comment l'utiliser pour tester unitairement chaque fonction.


    Si on détaille les deux rôles, c'est qu'il peut avoir confusion entre les deux par rapport à votre réponse : "Dans mon idée, les colonnes sont bien placées actuellement sur la feuille Fusion".
    C'est une réponse d'utilisateur de la feuille qui peut vouloir ou non arranger ses colonnes comme il le souhaite.

    La question que je posais est une question de développeur. Il n'est pas demandé de changer l'organisation de la feuille Fusion mais de la décrire pour utilisation dans une macro.

    3. L'analogie du robot

    Imaginez que vous expliquez à un utilisateur comment utiliser votre feuille mais vous êtes à distance au téléphone. Cet utilisateur est un peu spécial. Il ne sait pas lire les intitulés des entêtes de tableau tant qu'on ne lui dit pas où est le tableau dans la feuille.

    Imaginez que vous devez piloter un robot pour entrer la Cible dans la feuille "Fusion". Au téléphone, vous n'allez pas lui dire si les cellules qu'il doit saisir "sont bien placées actuellement sur la feuille Fusion".

    Vous allez lui communiquez dans quelles colonnes et dans quelles rangées il doit cliquer et saisir la cible.

    Le robot ne comprend que les déclarations de constantes. Il demande donc que vous définissiez, dans le module ModMerge ligne 298, le nom et la valeur de chaque colonne et les zones de rangées en commentant vos déclarations de constantes.

    Si le robot doit lire la cible, indiquez où il doit la trouver.
    Si le robot doit lire le stock, indiquez où le stock commence et où il finit.
    Si le robot doit écrire les solutions, indiquez où il doit écrire la première solution, la seconde solution, etc.

    Vous pouvez vous inspirer de la convention de nommage qui a été utilisé dans la description informatique de feuille "Données de fusion" dans le module ModMerge.

    On notera que la description des constantes de rangée commence toujours par "row" + un nom dont la première lettre est en majuscule.
    Idem pour les constantes de colonne où le préfixe est "col".

    Si on prend l'exemple du premier tableau de corrélation, comment a-t-il été décrit ?
    En ligne 38 on a indiqué au robot qu'il trouverait les rangées du tableau de corrélation des supports de l'objet Ring grâce aux deux constantes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Const rowRingSuppStart = 6 ' Première rangée de la famille RingSupp
    Public Const rowRingSuppEnd = rowRingSuppStart + nbrMaxRingSupp - 1 ' Dernière rangée de la famille RingSupp
    Mais ce n'est pas suffisant de décrire la zone de rangées de début et de fin.
    Il faut indiquer au robot également dans quelle colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const colObjFirst = 5 ' Colonne E de la matrice par support, prefixe, suffixe
    Le robot demande alors : où dois-je trouver les noms de support car dans l'optimisation d'ajouts d'objets, il n'a été déclaré que le premier support et le dernier support des nouveaux objets ? La réponse que le robot comprend est alors un nom de colonne, une valeur, un commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const colObjName = 35 ' Colonne AI Nom de chaque support, prefixe, suffixe
    4. Décrire la feuille Fusion avec des constantes nommées et commentées

    A vous maintenant de créer les nouvelles constantes de description de la feuille Fusion pour indiquer au robot où trouver la Cible, où trouver le Stock de quelle rangée à quelle rangée -- si la rangée de fin est variable indiquez le critère de fin tel que jusqu'à la prochaine ligne vide -- et finalement où afficher la ou les solutions ?

    Le robot ne sait pas interpréter le langage naturel tel que "E15 F15 G15 étant vide".
    Il ne comprend que le style de référence de cellule R1C1 décomposé en rowStroumphette = NN et colStroumphette = NN ' Commentaire
    dans les déclarations de constantes commentées du module ModMerge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const nom = valeur ' Commentaire

  3. #23
    Membre actif
    Homme Profil pro
    Ingénieur PI
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur PI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut
    Citation Envoyé par MattChess Voir le message
    1. En informatique, on ne peut pas utiliser un nom qui n'a pas été déclaré
    L'explication est EXCELLENTE !!!!!!!


    Citation Envoyé par MattChess Voir le message
    2. Design vs. run-time

    La question que je posais est une question de développeur. Il n'est pas demandé de changer l'organisation de la feuille Fusion mais de la décrire pour utilisation dans une macro.
    Du coup, je ne vois pas comment répondre


    Citation Envoyé par MattChess Voir le message
    3. L'analogie du robot

    Si le robot doit lire la cible, indiquez où il doit la trouver.
    Si le robot doit lire le stock, indiquez où le stock commence et où il finit.
    Si le robot doit écrire les solutions, indiquez où il doit écrire la première solution, la seconde solution, etc.
    La cible: B4 C4 D4
    Le stock: E4 F4 G4 + E5 F5 G5 + E6 F6 G6 + .... Jusqu'a ce que Ex Fx Gx soit blank
    Solution: soit à partir de la colonne "I" soit sur une nouvelle feuille.

    EDIT: je viens de lire la suite... j'ai rien comprit.
    Je tente quand même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Const rowTargetSuppStart = 4 ' Première ligne de l'objet cible
    Public Const rowRingSuppEnd = 4 ' Dernière ligne de l'objet cible
    Public Const colObjFirst = 2 ' Première colonne de l'objet cible pour les données Support,Prefixe,Suffixe
     
    Public Const colObjName = 35 ' Colonne AI Nom de chaque support, prefixe, suffixe
    Bon.... bhe je vois pas comment faire
    Parce que je peux pas dire: lis les Ring alors que les objets seront peut etre des CaC1H

  4. #24
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Par défaut La structuration par le nom de la constante
    1. Les coordonnées L1C1 sont plus rapides que "B4" pour Excel VBA

    Citation Envoyé par Mangaku Voir le message
    La cible: B4 C4 D4
    Le stock: E4 F4 G4 + E5 F5 G5 + E6 F6 G6 + .... Jusqu'a ce que Ex Fx Gx soit blank
    Solution: soit à partir de la colonne "I" soit sur une nouvelle feuille.
    Cette réponse est correcte mais le robot n'aime pas trop les coordonnées dans le style B4.
    En réalité, il pourrait les comprendre avec l'expression Range("B4") mais c'est moins optimisé que d'utiliser la notation attendue car "B4" est une chaîne de caractère plus longue à traiter que les fameuses constantes numériques qui sont attendues.

    Pour faciliter la traduction de B4, cliquez sur l'Excel menu "Outils" > "Options" > onglet "General"
    Cochez l'option [x] L1C1 reference style (R1C1 en anglais)
    Le B s'est transformé en 2 dans les entêtes de colonne sur la feuille car c'est la seconde lettre de l'alphabet.
    C'est assez évident pour B. Ce l'est moins pour la colonne 35 "AI". La première fois que j'ai vu la feuille Données de Fusion, je n'ai pas eu l'idée de scroller horizontalement jusqu'à la 35ème colonne. Les constantes servent également à indiquer qu'il y a des noms en colonne 35.

    2 sera donc la valeur attendue pour l'information de colonne où le robot trouvera le support de la cible.

    2. Un nom de constante trop compliqué

    Vous êtes très proche d'une solution.
    Citation Envoyé par Mangaku Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const rowTargetSuppStart = 4 ' Première ligne de l'objet cible
    La première constante rowTargetSuppStart a été définie correctement. La valeur 4 est exactement ce qui était attendue.

    Cependant sur cette rangée on trouve tout aussi bien le support, le préfixe et le suffixe de la cible et même du premier objet du Stock. Il n'est pas donc utile d'indiquer Supp. Cette information ne sera nécessaire que pour l'information de colonne.

    Vous avez également complété le nom par Start, ce qui suppose qu'il y a un End. Hors il n'y a qu'une seule cible. Cela veut dire qu'il ne faut pas de Start dans le nom de la cible et encore moins le commentaire "Première ligne" puisqu'il n'y aura qu'une ligne cible. Réserver Start pour la constante de stock car il y a plusieurs objets dans le Stock.

    En conclusion, le solution de la rangée de la cible est simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const rowTarget = 4 ' Ligne de l'objet cible
    Reste à créer les noms des trois colonnes.
    Idem pour le stock et la zone de solutions.

  5. #25
    Membre actif
    Homme Profil pro
    Ingénieur PI
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur PI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut
    Je ne suis pas sur d'avoir tout comprit.
    Mais je tente:
    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
    16
    17
    18
    19
    20
    21
    Public Const rowTarget = 4 ' Ligne de l'objet cible
    Public Const colObjSupp = 5 ' Colonne Support pour l'objet cible
    Public Const colObjPref = 6 ' Colonne Prefixe pour l'objet cible
    Public Const colObjSuff = 7 ' Colonne Suffixe pour l'objet cible
     
    Public Const colObjName = 35 ' Colonne AI Nom de chaque support, prefixe, suffixe
    nbrRowFamily = 7 ' Nombre de ligne entre chaque famille
    nbrRowInter = 3 ' Nombre de ligne entre chaque caractéristique d'objet
     
    Public Const rowSuppAnneauFirst = 6 ' Première ligne des Supports Anneau
    Public Const rowSuppAnneauEnd = rowSuppAnneauFirst + nbrMaxRingSupp - 1 ' Dernière ligne des supports anneau
    ' la constante nbrMaxRingSupp est définie dans "Description de chaque famille d'objet"
     
    Public Const rowPrefAnneauFirst = rowSuppAnneauFirst + nbrMaxRingSupp + nbrRowInter ' Première ligne des Prefixes Anneau
    Public Const rowPrefAnneauEnd = rowPrefAnneauFirst + nbrMaxRingPref - 1
     
    Public Const rowSuffAnneauFirst = rowPrefAnneauFirst + nbrMaxRingPref + nbrRowInter ' Première ligne des Suffixes Anneau
    Public Const rowSuffAnneauEnd = rowSuffAnneauFirst + nbrMaxRingSuff - 1
     
    Public Const rowSuppAmuFirst = rowPrefAnneauFirst + nbrMaxRingPref + nbrRowFamily ' Première ligne des Supports Amulette
    Public Const rowSuppAmuEnd = rowSuppAmuFirst + nbrMaxAmuSupp - 1
    Par contre, pourquoi ne pas reprendre les données utilisées dans "Description de chaque famille d'objet" ?
    Car cela nous donnerait toutes les "coordonnées" des lignes pour obtenir les noms des données !

    Ou, ne peut-on pas définir directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Const rowSuppAnneauFirst = 6
    Public Const rowSuppAnneauEnd = 8
    Public Const rowPrefAnneauFirst = 12
    Public Const rowPrefAnneauEnd = 39
    Public Const rowSuffAnneauFirst = 43
    Public Const rowSuffAnneauFirst = 62
    Public Const rowSuppAmuFirst = 70
    ...
    ...
    Non ?

  6. #26
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Par défaut
    Pourquoi ne donner que la valeur numérique du premier support puis en déduire les autres par rapport aux constantes précédentes ?
    La réponse est en 2.1 Le premier tableau "Recherche dans les tableaux" du message #6.

    Dans la proposition suivante, on met en rouge ce qu'il reste à améliorer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Const rowTarget = 4 ' Ligne de l'objet cible
    Public Const colObjSupp = 5 ' Colonne Support pour l'objet cible
    Public Const colObjPref = 6 ' Colonne Prefixe pour l'objet cible
    Public Const colObjSuff = 7 ' Colonne Suffixe pour l'objet cible
    Si la cible a pour petit nom "Target" dans la constante de rangée rowTarget, le robot s'attend fortement à trouver le petit nom "Target" dans la constante correspondante de colonne.
    Que représente "Obj" ? On pourrait penser qu'il s'agit d'un Stock en cherchant la colonne n°5 sur la feuille Fusion. En fait non, il est expliqué dans le commentaire qu'il s'agit d'une Cible, mais le robot ne comprend pas forcément ce qu'il y a écrit dans les commentaires.

    Pourquoi 5 est en rouge ? Dans la dernière version Fusion_CV6.xls, on trouve dans les colonnes 5 à 7 le Stock mais pas la Cible. Le Robot risque de se mélanger les manettes... d'autant plus que la bonne réponse 2 était dans le chapitre 1. Les coordonnées L1C1 sont plus rapides que "B4" pour Excel VBA du message #24.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const colTargetPref = colTargetSupp + 1 ' Colonne Prefixe pour l'objet cible
    On doit déduire la valeur de colTargetPref relativement à la constante précédente colTargetSupp dans le cas où, dans le futur, l'utilisateur souhaiterait changer l'organisation de la feuille.

  7. #27
    Membre actif
    Homme Profil pro
    Ingénieur PI
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur PI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut
    Je t'ai écrit un MP, car je ne suis vraiment pas sur d'avoir tout comprit...

    Mais je tente quand même.
    Cela donnerait ça alors?
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    ' Public Const colTargetName = 35 ' Colonne AI Nom de chaque support, prefixe, suffixe
    ' Public Const colStockName = 35 ' Colonne AI Nom de chaque support, prefixe, suffixe
     
    Public Const rowTarget = 4 ' Ligne de l'objet cible
    Public Const colTargetSupp = 2 ' Colonne Support pour l'objet cible
    Public Const colTargetPref = colTargetSupp + 1 ' Colonne Prefixe pour l'objet cible
    Public Const colTargetSuff = colTargetPref +1 ' Colonne suffixe pour l'objet cible
     
    ' Les valeurs suivantes sont éronnées car en relation avec la feuille Données Fusion, et non avec la feuille Fusion
    Public Const rowSuppAnneauFirst = 6 ' Première ligne des Supports Anneau
    Public Const rowSuppAnneauEnd = rowSuppAnneauFirst + nbrMaxRingSupp - 1 ' Dernière ligne des supports anneau
    Public Const rowPrefAnneauFirst = rowSuppAnneauFirst + nbrMaxRingSupp + nbrRowInter ' Première ligne des Prefixes Anneau
    Public Const rowPrefAnneauEnd = rowPrefAnneauFirst + nbrMaxRingPref - 1
    Public Const rowSuffAnneauFirst = rowPrefAnneauFirst + nbrMaxRingPref + nbrRowInter ' Première ligne des Suffixes Anneau
    Public Const rowSuffAnneauEnd = rowSuffAnneauFirst + nbrMaxRingSuff - 1
     
    Public Const rowSuppAmuFirst = rowSuffAnneauFirst + nbrMaxRingSuff + nbrRowFamily ' Première ligne des Supports Amulette
    Public Const rowSuppAmuEnd = rowSuppAmuFirst + nbrMaxAmuSupp - 1
    Public Const rowPrefAmuFirst = rowSuppAmuFirst + nbrMaxAmuSupp + nbrRowInter
    Public Const rowPrefAmuEnd = rowPrefAmuFirst + nbrMaxAmuPref - 1
    Public Const rowSuffAmuFirst = rowPrefAmuFirst + nbrMaxAmuPref + nbrRowInter
    Public Const rowSuffAmuEnd = rowSuffAmuFirst + nbrMaxAmuSuff - 1
     
    Public Const rowSuppCaC1HFirst = rowSuffAmuFirst + nbrMaxAmuSuff + nbrRowFamily ' Première ligne des Supports Armes 1main
    Public Const rowSuppCaC1HEnd = rowSuppCaC1HFirst + nbrMaxCaC1HSupp - 1
    Public Const rowPrefCaC1HFirst = rowSuppCaC1HFirst + nbrMaxCaC1HSupp + nbrRowInter
    Public Const rowPrefCaC1HEnd = rowPrefCaC1HFirst + nbrMaxCaC1HPref - 1
    Public Const rowSuffCaC1HFirst = rowPrefCaC1HFirst + nbrMaxCaC1HPref + nbrRowInter
    Public Const rowSuffCaC1HEnd = rowSuffCaC1HFirst + nbrMaxCaC1HSuff - 1
     
    Public Const rowSuppCaC2HFirst = rowSuffCaC1HFirst + nbrMaxCaC1HSuff + nbrRowFamily ' Première ligne des Supports Armes 2mains
    Public Const rowSuppCaC2HEnd = rowSuppCaC2HFirst + nbrMaxCaC2HSupp - 1
    Public Const rowPrefCaC2HFirst = rowSuppCaC2HFirst + nbrMaxCaC2HSupp + nbrRowInter
    Public Const rowPrefCaC2HEnd = rowPrefCaC2HFirst + nbrMaxCaC2HPref - 1
    Public Const rowSuffCaC2HFirst = rowPrefCaC2HFirst + nbrMaxCaC2HPref + nbrRowInter
    Public Const rowSuffCaC2HEnd = rowSuffCaC2HFirst + nbrMaxmuSuff - 1
     
    Public Const rowSuppHatFirst = rowSuffCaC2HFirst + nbrMaxCaC2HSuff + nbrRowFamily ' Première ligne des Supports Casques
    Public Const rowSuppHatEnd = rowSuppHatFirst + nbrMaxHatSupp - 1
    Public Const rowPrefHatFirst = rowSuppHatFirst + nbrMaxHatSupp + nbrRowInter
    Public Const rowPrefHatEnd = rowPrefHatFirst + nbrMaxHatPref - 1
    Public Const rowSuffHatFirst = rowPrefHatFirst + nbrMaxHatPref + nbrRowInter
    Public Const rowSuffHatEnd = rowSuffHatFirst + nbrMaxHatSuff - 1
     
    Public Const rowSuppPantFirst = rowSuffHatFirst + nbrMaxHatSuff + nbrRowFamily ' Première ligne des Supports Pantalons
    Public Const rowSuppPantEnd = rowSuppPantFirst + nbrMaxPantSupp - 1
    Public Const rowPrefPantFirst = rowSuppPantFirst + nbrMaxPantSupp + nbrRowInter
    Public Const rowPrefPantEnd = rowPrefPantFirst + nbrMaxPantPref - 1
    Public Const rowSuffPantFirst = rowPrefPantFirst + nbrMaxPantPref + nbrRowInter
    Public Const rowSuffPantEnd = rowSuffPantFirst + nbrMaxPantSuff - 1
     
    Public Const rowSuppArmorFirst = rowSuffPantFirst + nbrMaxPantSuff + nbrRowFamily ' Première ligne des Supports Casques
    Public Const rowSuppArmorEnd = rowSuppArmorFirst + nbrMaxArmorSupp - 1
    Public Const rowPrefArmorFirst = rowSuppArmorFirst + nbrMaxArmorSupp + nbrRowInter
    Public Const rowPrefArmorEnd = rowPrefArmorFirst + nbrMaxArmorPref - 1
    Public Const rowSuffArmorFirst = rowPrefArmorFirst + nbrMaxArmorPref + nbrRowInter
    Public Const rowSuffArmorEnd = rowSuffArmorFirst + nbrMaxArmorSuff - 1
     
    Public Const rowSoluce = 4 ' Ligne de l'objet cible
    Public Const colSoluceSupp = 10 ' Colonne Support pour l'objet cible
    EDIT: à noter que sur ce message j'ai oublié de noter cet objet dans le stock, qui m'a été necessaire:
    Masque Guerrier De La Précognition (+1)

Discussions similaires

  1. Fusion automatique données access sur openoffice writer
    Par HookerSeven dans le forum Access
    Réponses: 4
    Dernier message: 16/06/2008, 17h16
  2. [VBA-E] macro avec base de données externe
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2007, 14h12
  3. [iReport] Calcul de somme de variables et fusion de données
    Par RR instinct dans le forum iReport
    Réponses: 7
    Dernier message: 03/04/2006, 16h04
  4. Réponses: 4
    Dernier message: 01/03/2006, 11h21
  5. Fusion de données
    Par pc75 dans le forum ASP
    Réponses: 2
    Dernier message: 07/02/2006, 13h00

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