Posez votre question Signaler

MSGBOX EN VBA [Résolu]

lanetmel 74Messages postés 24 août 2011Date d'inscription 13 mai 2012Dernière intervention - Dernière réponse le 16 nov. 2011 à 17:19
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!
Lire la suite 

MSGBOX EN VBA »

5 réponses
Réponse
+1
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Heremion- 16 nov. 2011 à 16:24
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.
lanetmel- 16 nov. 2011 à 17:19
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!
Ajouter un commentaire
Ce document intitulé « MSGBOX EN VBA » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?