MSGBOX EN VBA

Résolu
lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   -  
lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici ma formule
Si k6-k7 > 2
Si oui, je veux qu'un msgbox s'ouvre et donne un message
Si non : rien
et je veux la même chose K8-K9 ....

Je n'y arrive pas!
merci à l'avance!

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Bonjour,
    Je veux, je veux...
    Je n'y arrive pas!
    Qu'as tu fait déjà? Montre nous un bout de code...

    Sinon, ça n'est pas très compliqué :
    - une boucle pour les lignes (6-7) (8-9) (10-11) etc...
    - un test If End If
    - un MsgBox si oui...
    En gros :
    Dim Lign As Long
    For Lign = 6 To 10 Step 2
    If "K"Lign - "K"Lign + 1 > 2 Then
    MsgBox
    End If
    Next

    Je précise que ce code n'en est pas un. Il ne fonctionne donc pas. Il s'agit d'un exemple approximatif de ce qu'il convient de faire...
    1
  2. Heremion Messages postés 564 Statut Membre 102
     
    Bonjour Lanetmel,

    Pour rejoindre le point évoqué par Pijaku, tu es sur un forum "d'entraide", il est donc souhaitable de dire "je souhaite" plutôt que "je veux". Cela n'incite guère les gens à t'apporter leur aide.

    Quoiqu'il en soit, voici le code que tu cherches.

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim resultat
    
        If (Not Intersect(Target, Range("K6:K7")) Is Nothing) Then
            If Range("K6").Value - Range("K7").Value > 2 Then
                MsgBox "(1) Supérieur à 2"
            End If
        End If
        If (Not Intersect(Target, Range("K8:K9")) Is Nothing) Then
            If Range("K8").Value - Range("K9").Value > 2 Then
                MsgBox "(2) Supérieur à 2"
            End If
        End If
    End Sub
    
    
    --
    Il faut toujours penser à accepter un post qui vous sort du pétrin
    0
  3. lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   4
     
    Bonjour pijaku et Heremion,

    merci beaucoup pour votre aide, désolé de ma formulation. J'ai compris le message. Si je ne me trompe pas, il faut mettre ce code dans la feuille, mais voilà que j'ai déjà ceux-ci dans cette feuille

    Private Sub worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Set vtarget = Intersect(Target, Columns(4))
    If Not (vtarget Is Nothing) Then
    For Each varea In vtarget
    For Each vcell In varea
    If Not (IsEmpty(vcell.Value)) Then
    If vcell.Row > 5 Then
    Range("C" & vcell.Row).Value = Time
    End If
    Else
    Range("C" & vcell.Row).ClearContents
    End If
    Next
    Next
    End If
    Application.EnableEvents = True
    End Sub

    Private Sub heure()
    Dim temp As Range, heure As Range
    Set temp = Range("D6:D110")
    Set heure = Range("c6:C110")
    If temp > 0 Then heure.Value = Time
    End Sub

    Il ne semble pas possible de créer un autre Private Sub worksheet_Change(ByVal Target As Range)
    dans la même feuille.. J'ai aussi essayer d'integrer le nouveau code à la suite de l'autre mais de ce que je comprends ça peux pas marcher...puisque dans mon autre code j'ai aussi un intersect target...? Qu'en pensez-vous?

    merci beaucoup
    Mélanie
    0
    1. Heremion Messages postés 564 Statut Membre 102
       
      Dans la procedure Change, rien ne t'empêche d'avoir plusieurs intersec.

      Tu les mets les uns à la suite des autres, en faisant bien attention qu'ils n'entrent pas en conflit.

      Tu vas donc mettre dans ton
      Private Sub Worksheet_Change(ByVal Target As Range)
      tous les tests sur les intersections.
      0
    2. lanetmel Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   4
       
      Bonjour Heremion

      ça a fonctionné! Il fallait que je le mette entre la première et deuxième ligne! moi j'essayais de le mettre à la fin!!!!

      Un énorme merci pour ton aide!
      0