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 :

If avec un nombre de conditions variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 24
    Par défaut If avec un nombre de conditions variables
    Bonjour à tous,

    Je cherche à faire un test If avec un nombre de conditions variables.

    Considérons un tableau modifiable par l'utilisateur qui à une valeur "Onglet 1"associe plusieurs valeurs "Planner". L'utilisateur étant libre d'ajouter ou de retirer des planner associé à la valeur "Onglet 1"

    J'aimerai faire un test IF du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Sheet1.Cells = Planner 1 Or Sheet1.Cells = Planner 2 Or Sheet1.Cells = Planner 3 Then 
    ....
    End If
    Le soucis c'est qu'une fois il y aura 2 planner, une autre fois 4 etc...

    A chaque lancement de la macro, je stocke les valeurs "Planner" dans un tableau et j'aimerai pour faire un test :

    If Sheet1.Cell appartient a une des valeurs du tableau Then
    ...
    End If
    Images attachées Images attachées  

  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,

    peut-on avoir la suite de ton raisonnement stp ?
    En l'etat actuel des informations donnees, je ne suis pas en mesure de te repondre car on ne sait pas si tu fais un test sur une valeur, sur une serie de valeurs, sur des no;bres, sur des chaines de caracteres...
    De plus, vu que le code VBA que tu nous proposes ne pourra pas fonctionner en l'etat, on ne sait pas si tu veux tester des numeriques autre chose

    Plus tu es precis dans ta demande, plus on pourra etre efficaces dans nos reponses
    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 émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonsoir,

    Comme ton test est un OU il suffit qu'il y ait un Planner dans ta colonne.
    - soit tu fais un majorant (pas très beau) et tu prévois 20 ou 50 lignes au maximum.
    - soit tu fais une boucle et tu t'arrêtes dès que tu as trouvé un Planner

    PPz

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 24
    Par défaut
    Bonjour,

    Pour jpcheck : Je fais un test sur des string. Voici ma boucle if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     While Trim(Sheets(1).Cells(i, 1).Value) <> ""
            If Trim(Sheets(1).Cells(i, 28)) = "STS_CT_CUST" Or Trim(Sheets(1).Cells(i, 28)) = "STS_CT_ENG" Or Trim(Sheets(1).Cells(i, 28)) = "STS_CTL_ENG" Or Trim(Sheets(1).Cells(i, 28)) = "MULTOS" Then
            Sheets("CUST_ENG").Cells(l, 1) = Sheets(1).Cells(i, 1)
            Sheets("CUST_ENG").Cells(l, 2) = Sheets(1).Cells(i, 2)
            Sheets("CUST_ENG").Cells(l, 3) = Sheets(1).Cells(i, 3)
            Sheets(1).Rows(i).Interior.ColorIndex = 15
            l = l + 1
            End If
            i = i + 1
            Wend
    Je répète mon problème : Le nombre de test que j'effectue dans mon If (ici 4) est variable est dépend d'un tableau que l'utilisateur rempli avant de lancer la macro.

    PPz78 : Pourrais-tu develoopper ? J'arrive à voir comment ca me débarasse de mon problème.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/12/2007, 16h17
  2. Affichage avec un nombre de colonnes variable
    Par sebaaas dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/10/2007, 19h53
  3. SELECT avec un nombre de colonnes variable
    Par sorcer1 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 24/09/2007, 21h58
  4. Réponses: 3
    Dernier message: 23/08/2007, 00h39
  5. Interface avec un nombre de champs variable
    Par vladvad dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/06/2007, 11h19

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