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 :

VBA en remplacement de fonctions si, et, gauche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Finance d'entreprise

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Par défaut VBA en remplacement de fonctions si, et, gauche
    Bonjour,

    Je remercie d'avance les personnes qui prendront connaissance de mon message et qui pourront m'apporter leur aide sur mon sujet.

    Je ne suis pas du tout initié à VBA et j'aurai besoin de l'aide d'initiés pour résoudre mon problème.

    En effet, la solution que j'utilise habituellement (fonctions si imbriquées, combinées à des fonctions et et gauche) est limitée dans mon cas présent car je dépasse les 7 fonctions si imbriquées.

    Voici ce que je souhaite faire :

    - j'ai un tableau à 4 colonnes et n lignes

    - sur la base de la combinaison de 3 des 4 critères (aléatoire en fonction des règles), je cherche à produire une valeur spécifique dans la colonne E.

    Je vous joins le fichier excel avec des explications ce qui sera peut-être plus clair.

    Je ne sais pas du tout comment mettre en musique cela via VBA. Vos explications et votre aide m'aideraient beaucoup.

    Je vous en remercie d'avance.

    Très bonne journée.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par flofloflo76 Voir le message
    Je vous joins le fichier excel
    https://www.developpez.net/forums/d8...s-discussions/

    Je ne sais pas du tout comment mettre en musique cela via VBA. Vos explications et votre aide m'aideraient beaucoup.
    Pour avoir les bases en VBA : http://bidou.developpez.com/article/VBA/

    En effet, la solution que j'utilise habituellement (fonctions si imbriquées, combinées à des fonctions et et gauche) est limitée dans mon cas présent car je dépasse les 7 fonctions si imbriquées.
    Il existe en VBA l'équivalent du SI() de Excel. C'est le fonction IIf() qui fonctionne quasiment de la même façon.
    https://msdn.microsoft.com/fr-fr/VBA...s/iif-function

    Cependant, si tu veux faire quelque chose d'un peu compliqué, il vaudrait mieux passer par des structure If Then ou Select Case.
    https://msdn.microsoft.com/fr-fr/VBA...else-statement
    https://msdn.microsoft.com/fr-fr/VBA...case-statement

    Pour répondre aussi aux questions de ton titre :

    La fonction ET() d'Excel est géré en VBA comme un opérateur (ce qui est plus logique) And :
    https://msdn.microsoft.com/fr-fr/VBA...s/and-operator

    La fonction GAUCHE() d'Excel a pour équivalent en VBA Left() qui fonctionne exactement pareil :
    https://msdn.microsoft.com/fr-fr/VBA.../left-function

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Finance d'entreprise

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Par défaut
    Bonjour,

    Merci beaucoup pour ta réponse Menhir.

    Après plusieurs tests et la lecture des sites, le résultat n'est pas au rendez-vous.

    Comme je galérais à faire quelques lignes de bases pour le VBA, j'ai essayé de passer par l'enregistrement d'une macro en jouant les fonctions si et et mais le résultat ne me convient pas.

    Voici le code que cela me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro2()
        ActiveCell.FormulaR1C1 = _
            "=IF(AND(RC[-4]=""ABC"",RC[-3]<0,RC[-2]=""Ventes""),""TOTO"",IF(AND(RC[-4]=""DEF"",RC[-3]>0)""TITI"","""
        Range("E2").Select
        Selection.AutoFill Destination:=Range("E2:E9999")
        Range("E2:E11").Select
    End Sub
    Cela ne me convient pas car j'ai l'impression que le code créé est un code "dynamique". Or, je souhaite qu'il ne s'applique qu'à ma colonne E.

    Est-ce que quelqu'un pourrait me mettre sur la voie sur le première règle afin que je puisse mieux comprendre et pouvoir le mettre en oeuvre ensuite sur mes autres règles ?

    Merci d'avance de votre aide.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par flofloflo76 Voir le message
    Comme je galérais à faire quelques lignes de bases pour le VBA
    C'est la raison pour laquelle je t'ai conseillé de commencer par te former aux principes de base.
    http://bidou.developpez.com/article/VBA/

    j'ai essayé de passer par l'enregistrement d'une macro
    L'enregistreur automatique de macro est un outil formidable.
    Mais le résultat qu'il donne ne doit pas être utilisé tel quel (sauf dans quelques rares cas très particuliers).
    Il ne sert qu'à mettre sur la voie d'une solution.
    Il faut essayer de comprendre le code obtenu pour créer son propre code. Pour t'aider à comprendre, tu peux utiliser l'aide VBA Excel intégrée qui est très bien faite et à laquelle tu peux accéder par la touche F1 (perso, j'ai mis en raccourci dans mon navigateur l'accès direct aux objets les plus courants).

    en jouant les fonctions si et et mais le résultat ne me convient pas.
    Ce que fait ton code n'est ni plus ni moins que de mettre des fonction Excel dans des cellules, ce qui est exactement ce que tu veux éviter si j'en crois ton premier message.
    Ca n'est donc certainement pas la bonne voie pour essayer de résoudre ton problème.

Discussions similaires

  1. [XL-2002] Code VBA pour remplacer la fonction RECHERCHEV
    Par NoodleDS dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/07/2013, 09h58
  2. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  3. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18
  4. [VBA-W] [AUTOMATION]Liste Fonctions/Paramètres
    Par Sunny dans le forum VBA Word
    Réponses: 2
    Dernier message: 05/12/2002, 16h35
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

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