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 :

Condition Macro Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut Condition Macro Excel
    Je débute dans la macro excel, il y a certaines manip que je n'arrive pas à trouver, en espérant que certaines personnes parmi vous soient assez callés ..

    J'aimerais installer une condition

    C'est à dire

    J'aimerais que si dans la colonne L

    Il y a marqué "RESTREINT" dans une des cases, dans ce cas

    dans la case K il y a marqué "DESTINATAIRE"

    Ou si dans la colonne L une case contient "INTERNE",

    dans ce cas la case K contiendrait "ECM"

    Exemple :

    Si L6 = RESTREINT alors K6 = DESTINATAIRE

    ou si L86 = INTERNE alors K86= ECM


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sheets("Export").Select
    If [L3= RESTREINT] Then [K3= EDF]
    ElseIf [L3=INTERNE] Then [K3=DESTINAIRES]
    End If
    Sheets("Export").Select
    Dim note As Integer, commentaire As String
        note = Range("L3")
    'Commentaire en fonction de la note
        If note = INTERNE Then
    commentaire = "ECM"
        ElseIf note = RESTREINT Then
            commentaire = "DESTINATAIRES"
        End If
        Range("K3") = commentaire
    J'ai essayé ça, mais en vain...

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et Bienvenu,

    certaines personnes parmi vous soient assez callés
    Ne t'inquète surtout pas, les Daniel, Philippe, mercatog et autres pgz le sont très largement.

    Pour ton cas, sans VBA, je pense qu'une table à laquelle se référerait un fonction RechercheV, ou une combinaison d'Index et Equiv, conviendraient parfaitement.

    Sinon, en VBA la meiileure solution serait plutôt la gestion des cas par la méthode .

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    D'accord merci en tout cas, bien que je n'ai pas tout à fait tout saisi

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Précise ta question. Que n'as-tu pas saisi?

    As-tu essayé? Si tu utilises un code, sur quoi buggue-t-il?

    Et surtout, as-tu cherché?

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    Je n'ai pas saisi ce que je pouvais essayer comme formule, j'ai essayé celle que j'ai écrite plus haut, mais elle n'a pas fonctionné, et je n'ai pas compris la solution que vous me proposiez.
    Oui je fais que ça chercher sur des sites, forums à droite à gauche

  6. #6
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Enzo
    Essayes ce code, j'ai mis le fichier en pièce jointe, et dis moi si cela répond à ta demande.
    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
    Option Explicit
     
    Sub Choix_Colonne()
    Dim data As Worksheet
    Dim Col As Range
    Dim i As Integer
    Set data = ThisWorkbook.Sheets("Data")
    i = 1
     
       Do While data.Cells(i, 12) <> ""
     
                        If data.Cells(i, 12) = "RESTREINT" Then
                        data.Cells(i, 11) = "EDF"
                        ElseIf data.Cells(i, 12) = "INTERNE" Then
                        data.Cells(i, 11) = "DESTINATAIRE"
                        End If
                        i = i + 1
     
         Loop
     
    End Sub
    Fichier Joint :

    Condition Colonne.xlsm


    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  7. #7
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    J'ai donc essayé ca :

    Lien screen :
    http://www.imagebam.com/image/e3756e....jpg%5B/IMG%5D

    Mais ma colonne K n'a pas bougé..
    Lien screen 2
    http://www.imagebam.com/image/44413d...22imagebam.com

    Je présume que j'ai dû oublier de rajouter des données, mais j'arrive pas à trouver lesquelles,
    désolé de pas avoir tt compris, je débute, en tt cas c'est très gentil de votre part de m'aider

    Je pense que c'est parce que j'ai pas rajouté les données

    la feuille se nomme "Export"
    Les données se trouvent dans la colonne L
    et doivent être reportées ds la colonne K

    Mais je sais pas ou noter tt ca (anglais à désirer)

  8. #8
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Enzo
    Dans ton cas il faut remplacer la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set data = ThisWorkbook.Sheets("Data")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set data = ThisWorkbook.Sheets("Export")
    Il faut effectivement que tu ai des données en colonne L, j'ai codé en supposant qu'il n'y avait pas de cellule vide dans ta colonne(c'est à dire il ne faut pas L4 remplie, L5 vide, L6 remplie).
    Le code parcourt la colonne L jusqu'à la dernière cellule non-vide
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  9. #9
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Eric,

    Je persiste à dire que la méthode est la plus adaptée car plus lisible.

    D'autre part, et si je peux me permettre, il est de bon aloi de libérer les variables en fin de procédure.

    Ici


  10. #10
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    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
     Option Explicit
     
    Sub Choix_Colonne(L)
    Dim data As Worksheet
    Dim Col As Range
    Dim i As Integer
    Set data = ThisWorkbook.Sheets("Export")
    i = 1
     
       Do While data.Cells(i, 12) <> ""
     
                        If data.Cells(i, 12) = "RESTREINT" Then
                        data.Cells(i, 11) = "EDF"
                        ElseIf data.Cells(i, 12) = "INTERNE" Then
                        data.Cells(i, 11) = "DESTINATAIRE"
                        End If
                        i = i + 1
     
         Loop
    J'ai procédé comme cela, mais cela ne fonctionne toujours pas, j'ai le droit au message d'erreur : "cette commande va arrêter le deblogueur"

  11. #11
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Enzo,

    Sauf ton respect, il faudrait commencer par border les bases.

    "cette commande va arrêter le deblogueur"
    n'est pas un message d'erreur.

    Lorsque une erreur survient, l'éditeur VBA (ou VBE) s'arrête sur la ligne de code qui entraîne celle-ci.
    Il la surligne, généralement en jaune.

    Le mode d'exécution est alors en débogage (pas à pas). La ligne en erreur pouvant être modifiée.
    Un message d'erreur est affiché. C'est celui-ci qu'il fait retourner sur le forum.

    Le message que tu cites signifie qu'ayant fermé VBE, le mode pas à pas disparaît. Ce qui est logique.

  12. #12
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    Pas de souci, au contraire merci de m'expliquer, je vais voir ça tte de suite, quel est le véritable message d'erreur alors

  13. #13
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    http://www.imagebam.com/image/029662372741747

    Donc voici le message d'erreur

  14. #14
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je persiste quant aux bases.

    Ce type d'instruction se place en début de module.

    Il signifie que toutes les variables doivent être déclarées.

  15. #15
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    Merci Marcel, oui je sais mes bases sont à revoir, j'ai déjà essayé de trouver des sites bien expliqués, mais il y a toujours des choses qui ns échappe.
    Et j'ai qu'une petite période pour finir ma macro, merci en tt cas de votre aide

  16. #16
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Pas de problème.

    As-tu essayé le code d'Eric? As-tu rencontré une erreur? Si oui, sur quelle ligne s'est arrêté le débogueur?

  17. #17
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    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
     Option Explicit
     
    Sub Choix_Colonne(L)
    Dim data As Worksheet
    Dim Col As Range
    Dim i As Integer
    Set data = ThisWorkbook.Sheets("Export")
    i = 1
     
       Do While data.Cells(i, 12) <> ""
     
                        If data.Cells(i, 12) = "RESTREINT" Then
                        data.Cells(i, 11) = "EDF"
                        ElseIf data.Cells(i, 12) = "INTERNE" Then
                        data.Cells(i, 11) = "DESTINATAIRE"
                        End If
                        i = i + 1
     
         Loop
    j'ai le droit à : (Screen)
    http://www.imagebam.com/image/029662372741747

    J'ai donc continué avec ce code, en mettant tout en haut mais j'ai le droit à : "Erreur de compilation, Instruction incorrecte dans une procédure"..

    Je ne sais plus vraiment comment m'y prendre

  18. #18
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Tout en haut.

    On est bien d'accord, tout en haut du module.

    Que vient faire l'argument "L" dans ta déclaration de procédure?

    Supprime-le puis essaie de nouveau.

    Quant au message d'erreur, c'est le même que précédemment...
    Or, tu dis que tu as placé l'Option en entête de module.

  19. #19
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 51
    Par défaut
    C'est bon ça fonctionne merci beaucoup MarcelG et eric4459 !!!
    haa c'est tellement agréable une macro qui fonctionne !
    Encore merci !

  20. #20
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Enzo,
    Supprimes également la ligne qui ne sert à rien mais j'ai oublié de l'enlever.

    Marcel,
    Je ne suis pas expert moi non plus en Vba, pourrais-tu m'indiquer un post ou trouver des infos sur Select Case, l'aide vba ne m'a pas vraiment aidé surtout lorsque le choix se porte sur un mot.
    Voici ce que j'ai tenté d'écrire mais rien ne se passe lorsque ma cellule contient "RESTREINT" ou "INTERNE"
    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
    Sub Condition_Colonne()
    Dim data As Worksheet
    Dim i As Integer
    Dim Cond As String
    Set data = ThisWorkbook.Sheets("Data")
    i = 1
     
       Do While data.Cells(i, 12) <> ""
     
            Select Case Cond
            Case "RESTREINT"
                data.Cells(i, 11) = "EDF"
            Case "INTERNE"
                data.Cells(i, 11) = "DESTINATAIRE"
             End Select
                        i = i + 1
     
         Loop
    Set data=Nothing
    End Sub
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Condition Macro Excel 2
    Par EnzoExcel dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2014, 15h55
  2. Macro Excel Somme sous condition
    Par nduverger dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/11/2014, 20h13
  3. Macro MEFC plus de 3 conditions sous excel 2003
    Par Kestion100 dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 11/02/2014, 11h32
  4. [XL-2007] Macro excel selon 2 conditions
    Par playa2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2013, 21h10
  5. Réponses: 2
    Dernier message: 06/01/2011, 17h35

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