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 :

Affichage de Box sous condition de valeur d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Affichage de Box sous condition de valeur d'une cellule
    Bonjour à tous !
    Je continue mes publications puisque celles-ci sont résolues très rapidement !!!
    Merci au forum pour l'efficacité !
    Voila mon problème :
    J'ai un tableau qui se crée suivant certaines formules.
    Ce tableau a donc un nombre différents de lignes à chaque fois que je lance mes calculs.

    Je souhaite faire un bouton de verif, celui ci aurait la fonction suivante :
    Il verifirait la derniere cellule du tableau (qui change à chaque fois) de la colonne J. Si cette cellule est supérieur à 0, la focntion afficherait une box avec un message d'erreur. SI la cellule est bien à zéro alors il afficherait une box avec un message de succès.

    Merci par avance.

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,


    Ce tableau a donc un nombre différents de lignes à chaque fois que je lance mes calculs.
    Ne pourrai-tu pas afficher ton message à ce moment là ?

    Je souhaite faire un bouton de verif, celui ci aurait la fonction suivante :
    Il verifirait la derniere cellule du tableau (qui change à chaque fois) de la colonne J. Si cette cellule est supérieur à 0, la focntion afficherait une box avec un message d'erreur. SI la cellule est bien à zéro alors il afficherait une box avec un message de succès.
    As-tu commencé à le faire, ce que tu demandes ne semble pas très compliqué, tu veux trouver la dernière ligne trouvée du tableau.

    Un exemple comme un autre Je suppose que ta colonne maitre est en colonne A sans titre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    With ThisWorkbook.Worksheets("Feuil1")
        derlig = .Cells(Rows.Count, 1).End(xlUp).Row
            If Not derlig > 1 Then
                mess = " Rien de renseigné"
            Else
                mess = " OK, dernière ligne : " & derlig
            End If
     
        MsgBox mess, vbExclamation, "résultat du contrôle du tableau"
    End With
    End Sub
    Edit tu peux aussi regarder ce post récent ici

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Suite...
    ça avance petit à petit...

    Donc voilà ce que j'ai pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton2_Click()
    i = Cells(Rows.Count, 10).End(xlUp).Row
        If Range("J" & i).Value = 0 Then MsgBox "Parfait!"
        If Range("J" & i).Value > 0 Then MsgBox "Erreur!"
    End Sub
    Sauf que l'identification de la dernière colonne non vide se fait correctement...mais il prend la dernière non vide à la fin de ma colonne qui inclut des formules.
    Je sais pas si c'est très clair... mais dans cette colonne j'ai une condition. Il fait un calcul sous condition. Donc ça affiche un résultat si la condition est réalisé, sinon ça laisse vide. Le code utilisé plus haut identifie la dernière cellule en comptant également celle ou il y a la formule et ou le calcul n'est pas fait.
    Moi je voudrais qu'il s'arrête la ou le calcul ne se fait plus.

    Ensuite, au lieu de value = 0. je voudrais conditioner différement :
    MsgBox "Parfait" si valeur comprise entre -1 et 0
    MsgBox "Erreur" sinon...

    Merci pour votre patience et votre aide,

    Cordialement,

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    Même si ta condition ne se réalise pas, et que dans ce cas tu as mis par exemple "", il va considérer que la cellule n'est pas vide (que tu peux vérifier en faisant =ESTTEXTE(Cellule)).
    Là je n'ai pas d'idée sur comment outrepasser cela... j'y réfléchis mais mes tests n'ont pas marché.

    Pour ce qui est d'avoir une valeur comprise entre -1 et 0, essayes ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long
     i = Cells(Rows.Count, 10).End(xlUp).Row
        If (Range("J" & i).Text >= -1 And Range("J" & i).Text <= 0) Then MsgBox "Parfait!"
        If Range("J" & i).Text > 0 Then MsgBox "Erreur!"

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Effectivement les cellules ne sont pas considerées comme vide...
    Merci pour la valeur comprise entre , j'actualise avec ça pour l'instant et je continue de chercher aussi pour la selection de la dernière ligne

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Points : 833
    Points
    833
    Par défaut Bonjour à roums, snowcho, aalex_38
    Effectivement les cellules ne sont pas considerées comme vide...
    Normalement si.

    Je n'ai pas bien compris le problème :

    Soit la colonne "j" avec une formule du style pour la cellule "J1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A1="";"";SOMME(A1:I1))
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlig = .Cells(Rows.Count, 1).End(xlUp).Row
    sélectionne la dernière cellule de la colonne "J" contenant une valeur calculée (ici "somme()").

    Où est le problème ?

    J'ai fait l'essai, avant de dire n'importe quoi, mais avec des formules jusqu'en ligne 31 (J31), la dernière ligne considérée est la "20" (J20) car c'est la dernière ligne avec des valeurs en "A" donc ayant un contenu calculé.


    Faut-il comprendre l'inverse ? La dernière cellule de la colonne "J" ayant une formule ?
    Dans cette condition une formule du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLign = Range("J1").SpecialCells(xlCellTypeLastCell).Row
    ESVBA

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Merci à tous
    Le petit frangin qui maîtrise pas mal la chose m'a pondu ce code qui résout la problématique.

    Voilà pour info :

    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
    Private Sub CommandButton2_Click() 
    lastcell = Cells(Rows.Count, 10).End(xlUp).Row 
    For i = 10 To lastcell Step 1 
     
        If Range("J" & i).Value <> "" Then 
            GoTo suite 
            ElseIf Range("J" & i).Value = "" Then 
                If (Range("J" & i - 1).Value >= -1 And Range("J" & i - 1).Value <= 1) Then MsgBox "Parfait!" 
                If (Range("J" & i - 1).Value <= -2 Or Range("J" & i - 1).Value >= 2) Then MsgBox "Erreur!" 
            GoTo fin 
        End If 
     
    suite: 
    Next 
    fin: 
     
    End Sub

  8. #8
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    RE,

    et sans les goto, cela peut marcher aussi comme ça non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton2_Click() 
    lastcell = Cells(Rows.Count, 10).End(xlUp).Row 
    For i = 10 To lastcell Step 1 
     
     If  Range("J" & i).Value = "" Then 
       If (Range("J" & i - 1).Value >= -1 And Range("J" & i - 1).Value <= 1) Then MsgBox "Parfait!" 
       If (Range("J" & i - 1).Value <= -2 Or Range("J" & i - 1).Value >= 2) Then MsgBox "Erreur!" 
     End If 
     
    Next 
    fin:

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

Discussions similaires

  1. Affichage d'images sous conditions
    Par Kalas22 dans le forum Salesforce.com
    Réponses: 2
    Dernier message: 06/05/2014, 14h56
  2. Réponses: 10
    Dernier message: 07/07/2012, 18h11
  3. [XL-2007] Macro pour supprimer des lignes sous conditions de valeur de cellule
    Par frisco75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/09/2011, 15h33
  4. Affichage MSGBOX selon valeur d'une cellule
    Par Thimmy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/06/2008, 10h07
  5. Réponses: 4
    Dernier message: 11/04/2007, 17h03

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