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 :

somme si appartient à une liste [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut somme si appartient à une liste
    Bonjour tous le monde
    débutant en VBA et je cherche à optimiser mon code
    j'ai une liste des comptes et je cherche à faire des regroupements
    somme si égal à x ou y ou z ou ....
    y a t il une solution éviter de répiter OR .... or ....or ...
    surtout que dans une autres partie du code je dois regrouper vers 20 comptes !!!!
    voiçi partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      For I = LBound(Tablo, 1) To UBound(Tablo, 1)
       If Tablo(I, 1) = "64007571" Or Tablo(I, 1) = "64007581" Or Tablo(I, 1) = "64027591" Or Tablo(I, 1) = "64757571" Or Tablo(I, 1) = "64757581" Or Tablo(I, 1) = "64757591" Or Tablo(I, 1) = "64907571" Or Tablo(I, 1) = "64907581" Then
            MOEUVREICF = MOEUVREICF + Tablo(I, 5)
        End If
    Next I
    Merci à tous et bonne et heureuse journée

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Liste = Array("64007571", "64007581", "64027591") 'etc.
    If IsNumeric(Application.Match(Tablo(I, 1), Liste, 0)) Then

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Merci Monsieur pour la réponse
    mais j'arrive pas à adapter
    est ce je dois conserver le boucle for??
    car quand j'ai fais ca j'ai obtenu zero comme résultat alors que les compte contient des valeurs
    Merci encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     For I = LBound(Tablo, 1) To UBound(Tablo, 1)
      Liste = Array("64007571", "64007581", "64027591", "64757571", "64757581", "64757591", "64907571", "64907581")
    If IsNumeric(Application.Match(Tablo(I, 1), Liste, 0)) Then
            MOEUVREICF = MOEUVREICF + Tablo(I, 5)
        End If
    Next I
    If MOEUVREICF <> "" Then Sheets("ENERGIE").Range("F34") = MOEUVREICF
    If MOEUVREICF = "" Then Sheets("ENERGIE").Range("F34") = 0
    Sheets("ENERGIE").Range("F34").NumberFormat = "#,##0.000"

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    est ce je dois conserver le boucle for??
    Non, ça remplace. Match est l'équivalent de la fonction Excel EQUIV. Si la valeur "Tablo(I, 1)" est contenue dans Liste, "Application.Match(Tablo(I, 1), Liste, 0)" est numérique.

    car quand j'ai fais ca j'ai obtenu zero comme résultat alors que les compte contient des valeurs
    Je ne vois pas ce qui peut renvoyer 0 ?

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    désolé du dérangement ... chui débutant
    j'ai un message d'erreur suite à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      ' For I = LBound(Tablo, 1) To UBound(Tablo, 1)
      Liste = Array("64007571", "64007581", "64027591", "64757571", "64757581", "64757591", "64907571", "64907581")
      If IsNumeric(Application.Match(Tablo(I, 1), Liste, 0)) Then MOEUVREICF = MOEUVREICF + Tablo(I, 5)
     
     
    'Next I
    If MOEUVREICF <> "" Then Sheets("ENERGIE").Range("F34") = MOEUVREICF
    If MOEUVREICF = "" Then Sheets("ENERGIE").Range("F34") = 0
    Sheets("ENERGIE").Range("F34").NumberFormat = "#,##0.000"
    message erreur : erreur d'exécution 9 : l'indice n'appartient pas à la sélection
    message d'erreur devant : If IsNumeric(Application.Match(Tablo(I, 1), Liste, 0)) Then
    merci encore

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    désolé du dérangement ... chui débutant
    Pas de problème, on est tous passé par là. D'après le message, la valeur de "Tablo(I, 1)" ne se trouve pas dans "Liste". Fais attention de "Tablo(I, 1)" est numérique, tu ne trouveras pas de correspondance dans Liste. Si tu mets "64007571", il s'agit d'une valeur texte, pas d'un nombre.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/06/2010, 18h46
  2. Réponses: 2
    Dernier message: 05/08/2009, 15h58
  3. Somme à trouver parmi une liste de montants
    Par Filaxe dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/10/2008, 10h53
  4. Recherche si un caractère appartient à une liste
    Par rantanplan08 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/04/2006, 18h04
  5. Réponses: 7
    Dernier message: 15/02/2006, 21h04

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