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 :

[E-03] Casse-tête génération d'un code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut [E-03] Casse-tête génération d'un code
    Bonjour à tous,

    voici mon impasse :
    en colonne B j'ai des codes (ex : k1...)
    en colonne C j'ai d'autres codes (ex : v1...)
    Je voudrais pouvoir générer un nouveau code en colonne D selon les règles suivantes :
    - tous les codes communs de la colonne B doivent être sous un même code en colonne D
    - tous les codes communs de la colonne C doivent être sous un même code en colonne D
    Je ne sais pas si cela est suffisamment clair mais je pense que l'exemple en fichier joint éclairera mon propos. (J'ai rempli manuellement la colonne D pour montrer le résultat que j'attends)

    Merci à tous ceux qui se pencheront sur mon casse-tête...

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Si les codes sont triés dans les colonnes B et C, alors l'idée serait

    Mem1 = code1(ligne1) : Mem2 = Code2(ligne1) : T = 1
    Code3(ligne1) = "Q" et T
    de la 2 ème à la dernière ligne (L)
    • si Code1(L) <> Mem1 ET Code2(L) <> Mem2 alors T = T +1
    • Code3(L) = "Q" & T
    • Mem1 = code1(ligneL) : Mem2 = Code2(ligneL)

    Boucle

    PGZ

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut
    Bonjour Pgz,
    merci pour ta réponse rapide mais je ne vois pas très clairement ce que ça donne en code.
    Par ailleurs je peux trier l'une des 2 colonnes (B ou C) mais l'autre sera forcément dans le désordre (sinon ce serait trop facile). Du coup je ne sais pas si ça peut marcher comme ça...
    Personellement je vient de partir sur la piste suivante, en utilisant la formule dans Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(B4=B3;C4=C3);D3;D3+1)
    en mettant la valeur 1 dans D3 et en transformant les codes des colonnes B et C en nombres.

    Mais ça ne donne rien puisque mes éléments dans la colonne C sont dispersés...

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    RE,

    Tu peux trier sur 2 colonnes. L'une (B) sera prioritaire. Et cela devrait être satisfaisant.
    Ce sur quoi tu es parti ne me semble pas prometteur.
    Qu'est-ce qui te pose problème pour coder l'algo que je te suggère?

    Cordialement,

    PGZ

  5. #5
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut
    Re,
    bon alors j'ai trouvé une façon de faire avec excel (sans code VBA), vous verrez la solution en pièce jointe.
    En gros,
    - je transforme mes codes en nombres
    - je compare mes chiffres ligne à ligne dans ma colonne triée (B) et j'affecte au nouveau code le code de la colonne C
    - je réitère le processus autant de fois qu'il le faut pour ne plus avoir de changement.

    Voilà je pense qu'on doit pouvoir faire la même chose par macro de façon plus élégante et je suis preneur de toute version codée que vous pourriez proposer mais au moins ça marche.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut
    Re Pgz,

    ce qui me pose problème pour coder ton algo c'est que je suis encore débutant en codage VBA. J'arrive à comprendre un code quand il est écrit, à l'adapter à de nouvelles situations voire à l'améliorer, mais j'ai du mal à partir de 0.
    Dans ce cas précis je ne comprend pas bien ton raisonnement alors ça ne me facilite pas la tâche pour coder.

    Sinon, as-tu regardé ma solution sans code?
    A+

Discussions similaires

  1. [Tableaux] Casse têtes de boucles
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 28/06/2006, 00h24
  2. requête SQL un peu casse tête
    Par hellbilly dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/12/2005, 10h03
  3. Classe, pile, pointeurs et casse-tête!
    Par zazaraignée dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2005, 16h57
  4. casse-tête excel
    Par gregius dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 16h38
  5. [Plugin]Gestion de génération automatique de code
    Par Maggic dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/05/2004, 11h35

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