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} Condition sur IF


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} Condition sur IF
    Voici mon code

    ce que je voudrais faire
    c'est que de la ligne 2 a la ligne 20
    je regarde dans les cellules de B si il y a un ok ou non

    si il y a rien je fais apparaitre ma message box
    si il y a ok ou autre choses je ne fais pas apparaitre ma message box

    et comme vous le voyer ma message box je l'as fait apparaitre sur une feuille "Rapport" c'est la aussi ou elle s'execute

    mais je voudrais la faire apparaitre sur la feuille "Saisie"

    pour le moment j'ai contrer le probleme en fesant un retour sur la feuille Saisie
    mais bon si je pouvais evite ca


    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
    For i = 2 To 20
        If IsNumeric(Range("B" & i).Value) Then
     
        If Cells(i, 2) = "" Then
     
        Sheets("Rapport").Select
        Result = Cells(Range("A1").End(xlDown).Row, 1).Value
     
               MsgBox "depassement:" & Result
        Else
     
        Sheets("Saisie").Select
     
        End If
        Next i
     
        Sheets("Saisie").Select
     
        End Sub

    comme toujours un aiguillage est le bienvenue
    merci d'avance

  2. #2
    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,
    Une msgbox ne s'affiche pas sur une feuille, elle s'affiche sur l'ecran quelque soit la feuille active (petite nuance qui a son importance ). Donc je pense que ce qu'il te faudrait faire c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Saisie").Select
    MsgBox "depassement:" & Result

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    oki je te remercie

    et pour mon histoire de condition tu serais m'aiguiller?
    en plus je viens de me rendre compte que je lis les 20lignes
    mais si j'ai rien ma colonne A ca sert a rien de faire apparaitre une message box


    par contre j'ai rajouter un AND pour mettre plusieurs conditions ensembles ca me met erreur de syntaxe
    c'est interdit les AND dans les conditions?
    ou il y a une autre facon?

  4. #4
    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
    Nonon And est valide et meme recommande, mais il est parfois un peu capricieux (disons qu'il faut faire gaffe a ce qu'on ecrit).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(cells(i,2).Value) And isempty(Cells(i, 2)) Then
    F1 sur isempty pour comprendre. J'ai remplace range("B" & i) par cells(i,2) parce que je trouve plus lisible cells, et que j'aime bien avoir la meme chose ecrite pour le meme objet (et pas range a une ligne et cells a la suivante). Mais c'est tout a fait personnel, fait comme tu preferes

    Edit:
    par curiosite, tu as mis quoi dans ton and, qu'on puisse t'expliquer ton erreur

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    j'avais marquer que je voulais enclancher la condition que si
    j'avais un truc de marquer dans la colonne A et que si dans la colone B c'est marquer non

    mais ce que tu m'as passer ne me convient pas

    car j'ai pas le condition de A et surtout pour B j'ai marquer que si j'ai une chose numerique et je sais pas si un texte est considerer comme numérique



    voila un exemple
    si j'ai un texte dans le colone A et un acquitement ( mettre "ok" ) dans B je met la message box
    par contre si j'ai un texte dans A et pas d'acquitement dans B je fais apparaitre la message box

    Depassement en kg Acquitement
    3006,6 Kg à la ligne 694 numéro de lot: 5401001 date du début de l'opération05/10/2005 03:00:00 ok
    3002,53 Kg à la ligne 1190 numéro de lot: 6151001 date du début de l'opération12/04/2006 16:10:00 ok
    3001,272 Kg à la ligne 1667 numéro de lot: 6461001 date du début de l'opération15/11/2006 05:00:00

  6. #6
    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
    j'avais un truc de marquer dans la colonne A et que si dans la colone B c'est marquer non [...] car j'ai pas le condition de A et surtout pour B j'ai marquer que si j'ai une chose numerique et je sais pas si un texte est considerer comme numérique
    Je comprends pas trop, queles sont les conditions que tu veux ? A est non vide et B contient "Ok"?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (not isempty(Cells(i,1))) and cells(i,2).value = "Ok" then
    Sinon isnumeric est vrai si le contenu est numerique, le texte n'est pas numerique

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    oui tu as compris
    je ne fais apparaitre ma message box


    si ma colonne A est remplis par un texte et si dans la colonne B j'ai rien

    Je ne fais pas apparaitre ma message box

    Si ma colonne A est vide ou que j'ai ok dans la colonne B

    edit;j'ai essayer ton code ca me marque

    erreur definie par l'application ou pas l'objet

  8. #8
    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
    Et si B contient quelque chose mais pas Ok ?

    si ma colonne A est remplis par un texte et si dans la colonne B j'ai rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (not isempty(cells(i,1))) and isempty(cells(i,2)) then

    Si ma colonne A est vide ou que j'ai ok dans la colonne B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If isempty(cells(i,1)) or (cells(i,2).value="Ok" then)
    Je met plein de parenthese parce que les priorite de tests sont parfois un peu bizarres

  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 ma colone B ne doit contenir que ok et rien d'autre
    si elle contient pas ok

    j'irais fouetter en personne l'opérateur qui utilisera ce programme



    edit:toujours la meme erreur avec tes codes
    et ca plante que sur les lignes que tu m'as données

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Not (IsEmpty(Cells(i, 1))) And IsEmpty(Cells(i, 2)) Then MsgBox ("ok")
    If (Not IsEmpty(Cells(1, 1))) And IsEmpty(Cells(1, 2)) Then MsgBox ("ok2")
    Voila ce que j'ai mis dans un fichier a moi, ca marche. Apres tout depend de ce que tu veux comme condition (je suis toujours pas sur...). Mais la c'est simplement un probleme d'algebre booleen et je sais jamais comment excel gere les priorite entre les not, and, etc alors je contourne le probleme comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim CelluleARemplie as boolean, CelluleBVide as boolean
    CelluleARemplie = Not (IsEmpty(Cells(i, 1))) 
    CelluleBVide = IsEmpty(Cells(i, 2)) 
    If CelluleARemplie and CelluleBVide then

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    Voila le code que j'ai taper et qui marche

    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
    Sub Message()
     
     
      Sheets("Rapport").Select
                    Result = Cells(Range("A1").End(xlDown).Row, 1).Value
     
    For i = 2 To 10
    If Cells(i, 2) = "" Then
     
                    Sheets("Saisie").Select
                    MsgBox "depassement:" & Result
     
    Else
                    Sheets("Saisie").Select
     
    End If
    Next i
    End Sub
    mais comme tu le remarque je ne verifie que la colone B
    et je n'arrive pas a verifier la colone A car la fonction And est capricieuse

    tu aurais une idée?

  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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Message()
     
    Sheets("Rapport").Select
    For i = 2 To 10
    acquit = Cells(i, 2)
    acquit1 = Cells(i, 1)
     
    If acquit = "" And Not IsEmpty(acquit1) Then
     
    Sheets("Rapport").Select
        Result = Cells(Range("A1").End(xlDown).Row, 1).Value
     
               MsgBox "depassement:" & Result
     
     
    Else
                    Sheets("Rapport").Select
     
    End If
    Next i
    End Sub
    voila le code marche

    en plus l'opérateur peut mettre ce qu'il veut dans acquitement une fois acquite le message apparait plus

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

Discussions similaires

  1. [VBA-Excel]Aller sur une feuille sans l'activer.
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2006, 12h50
  2. [vba-Excel]pb sur replace et find
    Par sk8bcn dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/09/2006, 16h45
  3. [VBA-EXCEL]-condition pour ouvrir une msgbox
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2006, 20h51
  4. [VBA-Excel]recherche sur plusiers feuilles
    Par salim_kwada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/08/2006, 16h38
  5. [VBA excel] Probleme sur bouton commande
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 22/11/2005, 10h10

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