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 :

Synthétiser la formule avec Array() [XL-2003]


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
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Par défaut Synthétiser la formule avec Array()
    Bonjour à tous,

    Voici mon problème est le suivant:

    Je cherche à réduire ce code à l'aide de la fonction array (). J'ai 5 régions C,E,N,S,W. Chaque région porte un name de code et chaque nom de code doit être transcrite sur la feuille. Voici la portion de mon code :

    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
    For lignes_test = 0 To x_count
     
        If code_project = Cells(5 + lignes_test, 1) Then
            If code_region = "N" Then
            Cells(5 + lignes_test, 3) = "North"
            GoTo b_exit
                If code_region = "C" Then
                Cells(5 + lignes_test, 3) = "Central"
                GoTo b_exit
                    If code_region = "E" Then
                    Cells(5 + lignes_test, 3) = "East"
                    GoTo b_exit
                        If code_region = "S" Then
                        Cells(5 + lignes_test, 3) = "South"
                        GoTo b_exit
                            If code_region = "W" Then
                            Cells(5 + lignes_test, 3) = "West"
                            GoTo b_exit
                            End If
                        End If
                    End If
                End If
            End If
        End If
    b_exit:
    Next lignes_test
    Comment puis-je réduire ce morceau en quelques lignes à l'aide de la fonction array (). Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    je te recommande, si tu ne l'as pas deja fait, de lire cet excellent artcile sur les arrays :
    http://didier-gonard.developpez.com/...s-tableau-vba/

    tu devrais y trouver les methodologies qui resoudront ton soucis du moment

    Bonne lecture
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Par défaut
    Le problème n'est pas de lire ... c'est de comprendre l'ensemble à travers un exercice pratique.

    Dés que l'on passe au code, j'ai l'impression de lire de l'Ourdou ...et je décroche (Oui, oui, je comprends le chinois ^^).

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par TonyRc Voir le message
    Le problème n'est pas de lire ... c'est de comprendre l'ensemble à travers un exercice pratique.
    Bonjour,

    les codes des exemples du tutos sont "commentés" pour les expliciter, en faisant un effort pour décrypter ce qui peut t'intéresser et en posant une (des) question(s) (une question par message et dans un nouveau fil) sur ce que tu ne comprends pas (avec le code entre balises), tu auras des réponses point par point sans problème si besoin...

    cordialement,

    Didier

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    un code dans le genre devrais t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Cardinal As String
    Dim CardinalLong As String
    Dim I As Integer
     
    Cardinal = Array("C", "E", "N", "S", "W")
    CardinalLong = Array("Central", "East", "North", "South", "West")
     
    For lignes_test = 0 To x_count
        For I = 1 To 5
            If code_project = Cells(5 + lignes_test, 1) Then
                If code_region = Cardinal(I) Then Cells(5 + ligne_test, 3) = CardinalLong(I)
            End If
        Next I
    Next lignes_test
    mais tu dois faire l'effort (quitte à relire plusieurs fois) d'assimiler les liens que l'on te donne... surtout qu'il sont très bien fait!

    ceci dis n'hésite pas en cas de questions

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    on peut éviter les arrays

    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
     
     
    Sub renvoi()
    Dim macoll As New Collection
    macoll.Add Item:="North", Key:="N"
    macoll.Add Item:="Central", Key:="C"
    macoll.Add Item:="East", Key:="E"
    macoll.Add Item:="South", Key:="S"
    macoll.Add Item:="West", Key:="W"
    .......
    For lignes_test = 0 To x_count
         If code_project = Cells(5 + lignes_test, 1) Then Cells(5 + lignes_test, 3) = macoll(code_region)
    Next ligne_test
    .......
     
     
    End Sub

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Par défaut
    Merci à tous,

    L'ensemble des tutos est très bien fait. Je me suis initié à VBA grâce à ça. Mais les arrays, je suis comme benoît ... ça ne rentre pas . Le soucis est l'écriture du code, pas l'aspect dimensionnelle de la variable.

    Mayekeul, j'ai adopté ta méthode (j'ai modifié le code en fonction de mes besoins), mais je perçois l'idée. Cependant, il va falloir travailler sur le domaine à 2 dimensions (là elle était facile).

    Random, merci pour ton coup de pouce, je garde ta méthode sous le coude. Je suis encore qu'un débutant dans le domaine... Mais, elle fonctionne très bien.

    Mais, je ne maitrise pas les "as New collection"

    Qu'est que c'est?

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

Discussions similaires

  1. Probleme de type avec Array
    Par BECHE dans le forum Langage
    Réponses: 5
    Dernier message: 30/03/2006, 23h05
  2. Petit probleme avec Arrays.Sort(...)
    Par Seth77 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 15/01/2006, 12h48
  3. création de tableaux avec Array() et élément 'fantome'
    Par Talieth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2005, 09h49
  4. Réponses: 5
    Dernier message: 17/05/2005, 09h34
  5. [reseaux] Comment creer un compte user à partir d'un formul avec perl
    Par oulai_evado dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 01/10/2002, 19h54

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