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 Excel} Probleme de IF Then


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut {VBA Excel} Probleme de IF Then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub verification()
    Dim ValPrec As String, ValSuivante As String, CompareVals As String
    Dim i As Integer
     
    If ActiveCell.Text = ";MF 135 U;" Then
    Chrono = ";MF 135 U;MM 71135 U;MM 31762/40;MF 345 U;MM 71791/40;MM 71791/50;MPA 1;PA 71155;MF 50 U;MM 71150 U;MF 160 U;MM RH 71160 U;MM 71160 U;MM 71718/60;MF 360 U;MM 71791/60;MF 370 U;MM 71791/70;MF 175 U;MF 180 U;MF 135 1U;MF 31787;MM 1732 P45;MF 40 U;MF 8150 U;MF 60 U;MF 8160 U;MF 8160 USP;MF 8360 U;MF 8170 U;MF 8370 U;MF 940 U;"
    For i = 5 To 58
    If Cells(i - 1, 3).Value <> "" Then ValPrec = Cells(i - 1, 3).Value
    If Cells(i, 3).Value <> "" Then ValSuivante = Cells(i, 3).Value
    CompareVals = ";" & ValPrec & ";" & ValSuivante & ";"
    If Not Chrono Like "*" & CompareVals & "*" Then MsgBox ("Probleme a la cellule C " & i)
    Next i
    End If
    End Sub
    ce code me permet de verifier un odre de fabrication


    le probleme j'ai plusieurs produits et selon le produits j'ai un odre bien precis a faire et a verifier

    j'ai mis ce code en place pour un premier produits
    mais rien ne se passe

    quelqu'un aurait une idée d'aiguillage?

  2. #2
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    Bonjour,
    As tu essayer de voir ce que ca faisait au debogger ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    heu... c'est quoi le debogger?

  4. #4
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    En fait c'est exécuter ton programme au pas à pas.
    En fait su clqiues sur le coté gauche d'une de tes liugnes de code tu auras un point d'arrêt (couleur marron). Ensuite tu lances ta marco comme d'habitude et la macro s'arretra à ton point d'arret. Après tu fais F8 pour aller à la ligne suivante. Au moins tu peux deja voir si ton code s'execute et à quels endroits il peut y avoir des pbmes

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    il met en surbrillant jaune la ligne de la condition
    et la ligne End If

    je vois pas trop mon erreur
    a part peut etre une erreur de syntaxe auquel cas il me l'aurait dit
    a moins que ce soit sur le activecell


    car mon but est de verifier le produit que j'ai mis dans mon planning suit bien un odre chronologique

    c'est a dire que je dois verifier la case actuelle avec la case precedente
    et ainsi de suite a chaque fois que je retrouve le produit

    mais je pense que je dois avoir pas mal d'erreur de code

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    c'est quoi que tu appelle ligne de condition ? tu peux nous mettre la ligne sur laquelle ta macro s'arrete ?
    Met aussi des msgbox aussi ici et la pour avoir la valeurs de tes différentes variables pour voir si ça prend les bonnes

    De plus, si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveCell.Text = ";MF 135 U;" then
    C'est quoi que tu veux faire la ? t'a une cellule d'activée au moins ?

    Essaye de mettre un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A1").value = ";MF 135 U;"
    plutot je pense qu eça marchera mieux

    Est-ce vraiment un "=" que tu veux faire ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, 3).Value = ";MF 135 U;" Then
    j'ai modifié le code en mettant ceci a la place
    mais rien ce passe


    tu as raison pour mon activatecells il ne sert a rien du tout une erreur de ma part
    je veux mettre un " = " car j'ai plusieurs produits a verifier selon un ordre bien particulier a chaqu'un

    mais mon erreur ne peut venir que de la condition je ne vois rien d'autres
    je ne suis pas un expert non plus

  8. #8
    Membre expérimenté Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 19
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    tu es sur d'être sur la bonne feuille ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveCell.Text = ";MF 135 U;" Then

    perso une condition je la ferai plutôt comme ça pour être sur d'être au bon endroit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil1").Select
    If ActiveCell.Value = ";MF 135 U;" Then

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    non ce n'est pas un probleme de feuille où de localisation

  10. #10
    Membre expérimenté Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 19
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    alors je ne sais pas mais ce code là passe chez moi, la condition fonctionne, ça je le sais !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Citation Envoyé par ilcocodrillo
    tu es sur d'être sur la bonne feuille ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveCell.Text = ";MF 135 U;" Then

    perso une condition je la ferai plutôt comme ça pour être sur d'être au bon endroit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil1").Select
    If ActiveCell.Value = ";MF 135 U;" Then
    As tu essayé un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If WorkSheets("Feuil1").Cells(i,3) =";MF 135 U;" then
    ???
    Tu devrais peut-être vérifié aussi la condition après le =

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("PLANFAB").Cells(i, 3) = ";MF 135 U;" Then
    erreur defenie par l'application ou par l'objet


    voila ce que j'ai maintenant

  13. #13
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Bonjour a tous, bonjour Thomas,

    Je ne comprends pas trop ce que tu cherches a faire, si je me souvient bien tes cases contiennent seulement "MF 135 U", pas ";MF 135 U;" donc c'est normal que ca passe pas (ou alors tu as modifie ton projet depuis la derniere fois).

    Mais normalement le If qui pose probleme est inutile puisqu'il fait double emploi avec le Like. Je te conseillerais de modifier la chaine "chrono" plutot que de rajouter des conditions (encore une fois, si tes besoins n'ont pas change depuis la derniere fois)

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    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
    20
    Sub verification21()
     
    Dim ValPrec As String, ValSuivante As String, CompareVals As String
    Dim i As Integer
     
     
     
    For i = 5 To 58
    If Cells(i, 3) = "MF 135 U" Then
    Chrono = ";MF 135 U;MM 71135 U;MM 31762/40;MF 345 U;MM 71791/40;MM 71791/50;MPA 1;PA 71155;MF 50 U;MM 71150 U;MF 160 U;MM RH 71160 U;MM 71160 U;MM 71718/60;MF 360 U;MM 71791/60;MF 370 U;MM 71791/70;MF 175 U;MF 180 U;MF 135 1U;MF 31787;MM 1732 P45;MF 40 U;MF 8150 U;MF 60 U;MF 8160 U;MF 8160 USP;MF 8360 U;MF 8170 U;MF 8370 U;MF 940 U;"
     
    If Cells(i - 1, 3).Value <> "" Then ValPrec = Cells(i - 1, 3).Value
    If Cells(i, 3).Value <> "" Then ValSuivante = Cells(i, 3).Value
    CompareVals = ";" & ValPrec & ";" & ValSuivante & ";"
    If Not Chrono Like "*" & CompareVals & "*" Then MsgBox ("Probleme a la cellule C " & i)
     
    End If
    Next i
     
    End Sub
    Salut tonton


    C'est bon j'ai trouvé avec ton explication tonton
    une erreur d'ecriture de la condition
    maintenant ce bout de code me permet de verifier dans tout mon tableau l'ordre du produit MF 135 et pas les autres
    car comme je dit chaque produit a un odre bien particulier a lui meme

    il me reste a faire des conditions pour chacun de mes produits et c'est bon

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

Discussions similaires

  1. [VBA-Excel]probleme d'ecriture dans un fichier ini
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 18h45
  2. [VBA-excel]Probleme de macro pour creer un graphique.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 15h42
  3. [VBA Excel]probleme de copier/coller
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 31/01/2006, 14h22
  4. [VBA excel] Probleme sur bouton commande
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 22/11/2005, 10h10
  5. [VBA] [Excel] Probleme de rafraichissement d'un label
    Par lejert dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 17h09

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