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 :

Problème de base en VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut Problème de base en VBA
    Bonjour à tous,

    Je suis vraiment bloqué. Je dois écrire dans une cellule des multi-conditions. Je viens de démarrer en VBA et je ne comprends pas tout. J'arrive a Faire A1+A2 mais pas plus

    Pour info j'ai une feuille qui contient des colonnes et des lignes, pour le moment tout va bien. En colonne L j'aimerai de L2 à L71630 mettre une formule plutôt complexe :

    Mettre dans la cellule 0,00 si la Date (données d'une colonne ) et le numéro des ventes (données d'une colonne ) sont les mêmes que ceux de l'enregistrement précédent et que Mode de Règlement (données d'une colonne ) commence par "COMPOSE";
    A défaut
    Mettre dans la cellule les données de la cellule Prix de Vente (données d'une colonne ) si Mode de Reglement (données d'une colonne )="AVOIR";
    A défaut
    Mettre dans la cellule le montant mit après "AVOIR" du champ Mode de Reglement si Mode de Reglement commence par "COMPOSE" et contient "AVOIR";
    A défaut
    Mettre dans la cellule 0,00

    Vous trouverez un extrait en PJ. Si vous aviez une solution type VBA ça me sauverai la vie je dois le rendre assez rapidement.
    Classeur2.xlsx

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Es-tu vraiment obliger de passer par VBA ? Je pense que des formules Excel seraient largement suffisantes (et plus efficace).

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut
    Citation Envoyé par Oudouner Voir le message
    Bonjour,

    Es-tu vraiment obliger de passer par VBA ? Je pense que des formules Excel seraient largement suffisantes (et plus efficace).
    Merci pour ton retour rapide. Le souci c'est qu'en formule je m'embrouille facilement avec les SI imbriqués, tu penses que c'est vraiment plus simple ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nexbw Voir le message
    Merci pour ton retour rapide. Le souci c'est qu'en formule je m'embrouille facilement avec les SI imbriqués, tu penses que c'est vraiment plus simple ?
    Il est vrai que l'écriture de SI imbriqués est pas simple car on s'y perd vite. Cependant, vu le nombre de ligne que tu veux traiter, le code VBA qui me vient à l'esprit mettrait plusieurs minutes à s'exécuter, après je ne suis pas un pro donc il n'est pas impossible qu'il existe une solution rapide en VBA.

    Que veux-tu dire aussi par enregistrement précédent ?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut
    Citation Envoyé par Oudouner Voir le message
    Il est vrai que l'écriture de SI imbriqués est pas simple car on s'y perd vite. Cependant, vu le nombre de ligne que tu veux traiter, le code VBA qui me vient à l'esprit mettrait plusieurs minutes à s'exécuter, après je ne suis pas un pro donc il n'est pas impossible qu'il existe une solution rapide en VBA.

    Que veux-tu dire aussi par enregistrement précédent ?
    Je vais voir en Si imbriqués alors.
    L'enregistrement précédant signifie la cellule du dessus.

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Je ne sais pas trop ce qui est plus rapide, mais si tu préfères passer par VBA parce que c'est un peu plus clair que des SI imbriqué, tu peux créer une fonction personnalisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function conditions()As Double
        If ... And ...And ... Then 
            conditions = 0
        ElseIf ...
            conditions = ...
        ElseIf ....
            conditions = ...
        End If
    End Function
    Tu peux travailler avec ActiveCell et Offset pour passer de la cellule active vers les autres cellules qu'il faut comparer.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nexbw Voir le message
    Bonjour à tous,
    Mettre dans la cellule le montant mit après "AVOIR" du champ Mode de Reglement si Mode de Reglement commence par "COMPOSE" et contient "AVOIR";
    Merci
    Je ne comprend pas aussi ce que tu veux dire par "le montant mit après"

    Je vais essayer en VBA et en SI imbriqué de mon côté.

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut
    Citation Envoyé par Oudouner Voir le message
    Je ne comprend pas aussi ce que tu veux dire par "le montant mit après"

    Je vais essayer en VBA et en SI imbriqué de mon côté.
    Pour le moment j'ai réussi à faire ça. Mais ca me met Faux... et pour certaines ca fonctionne.

    SI(ET(B2=B1;C2=C1);SI(STXT(K2;1;7)="COMPOSE";"0,00";SI(K2="AVOIR";J2;SI(STXT(K2;1;7)="COMPOSE";SI(K2="*AVOIR*";=STXT(K1;14;7));"0,00"))))

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nexbw Voir le message
    Pour le moment j'ai réussi à faire ça. Mais ca me met Faux... et pour certaines ca fonctionne.

    SI(ET(B2=B1;C2=C1);SI(STXT(K2;1;7)="COMPOSE";"0,00";SI(K2="AVOIR";J2;SI(STXT(K2;1;7)="COMPOSE";SI(K2="*AVOIR*";=STXT(K1;14;7));"0,00"))))
    Essaye ceci :

    SI(ET(B2=B1;C2=C1;STXT(K2;1;7)="COMPOSE");"0,00";SI(K2="AVOIR";J2;SI(ET(STXT(K2;1;7)="COMPOSE";K2="*AVOIR*");STXT(K1;14;7);"0,00")))

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2017
    Messages : 7
    Par défaut
    Citation Envoyé par Oudouner Voir le message
    Essaye ceci :

    SI(ET(B2=B1;C2=C1;STXT(K2;1;7)="COMPOSE");"0,00";SI(K2="AVOIR";J2;SI(ET(STXT(K2;1;7)="COMPOSE";K2="*AVOIR*");STXT(K1;14;7);"0,00")))
    Merci Beaucoup !! Ca fonctionne

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nexbw Voir le message
    Merci Beaucoup !! Ca fonctionne
    J'ai essayé un code VBA, au final il s'exécute en 4-5s mais je pense qu'il faut mieux rester sur une solution purement Excel.

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

Discussions similaires

  1. problème remplissage base de données avec VBA Excel
    Par laminekane dans le forum Excel
    Réponses: 4
    Dernier message: 23/02/2016, 10h38
  2. Problème Update Base de données avec les composants ADO
    Par lingli dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/04/2006, 00h41
  3. Problème avec open() [Excel VBA]
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21
  4. Problème de base MySQL avec installation de script
    Par JoN28fr dans le forum Installation
    Réponses: 3
    Dernier message: 27/10/2005, 18h34
  5. Problème connection base
    Par krfa1 dans le forum ASP
    Réponses: 5
    Dernier message: 15/09/2005, 15h58

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