Msgbox fonction de 2 colonnes

Fermé
batifol13 Messages postés 10 Date d'inscription lundi 16 janvier 2012 Statut Membre Dernière intervention 17 décembre 2019 - 17 déc. 2019 à 11:49
jordane45 Messages postés 38256 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 octobre 2024 - 18 déc. 2019 à 09:51
Bonjour,
Dans une des colonnes (L) l'utilisateur peut rentrer un score ou bien NA sur une liste de 200 indicateurs. S'il répond NA, l'autre colonne (S) vérifie avec une formule si le NA a besoin d'être argumenté.
J'aimerais envoyer un message dès que l'utilisateur tape NA et que la formule en colonne S renvoie une réponse différente de " ".

Le problème avec ce que j'ai commencé à faire c'est que dès que je change une cellule alors que d'autres sont déjà remplies, j'ai tous les Msgbox qui vont apparaître pour toutes les autres cellules précédentes concernées aussi.
Je voudrais juste une msgbox, au moment où la donnée est rentrée dans la cellule en L, car les autres, l'utilisateur les aura déjà reçues et aura déjà cliqué OK.


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$L$5:$L$11")) Is Nothing Then
For Each cel In Sheets("Evaluation").Range("S5:S11")
If cel <> "" Then
reponse = MsgBox(cel.Offset(0, 0), vbExclamation)
End If
Next
End If
End Sub

Merci!!
A voir également:

4 réponses

jordane45 Messages postés 38256 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 octobre 2024 4 693
18 déc. 2019 à 09:51
Bon aller... je vais être sympa:

Regarde ce que donne ceci
    Dim ligne As Long
    Dim col As Long
    Dim valeur As Variant
    Dim valColS As Variant
    
    ligne = Target.Row
    col = Target.Column
    
    'valeur de la cellule modifiée :
    valeur = Target.Value
    
    'valeur de la cellule de la colonne "S" de la même ligne
    valColS = Cells(ligne, 19).Value
    
    'Permet de restreindre la macro à la plage L5:L11
    If Not Intersect(Target, Range("$L$5:$L$11")) Is Nothing Then
       'Tu vérifies si la valeur renseingnée = "NA" et que la cellule S est différente de vide
       If valeur = "NA" And valColS <> "" Then
            MsgBox "Tu vois.. ce n'est pas dur !"
       End If
    
    End If

1
jordane45 Messages postés 38256 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 octobre 2024 4 693
17 déc. 2019 à 14:47
Bonjour,

Au lieu de faire un
For Each cel

contente toi de regarder la cellule modifiée ( via la variable target )

0
batifol13 Messages postés 10 Date d'inscription lundi 16 janvier 2012 Statut Membre Dernière intervention 17 décembre 2019
Modifié le 17 déc. 2019 à 15:13
Merci mais pas compris.. ca donne quoi en code? (je suis nulle, je ne fais que copier et tester les trucs des autres :/)
0
jordane45 Messages postés 38256 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 octobre 2024 4 693
17 déc. 2019 à 15:25
Regarde ce que donne :
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ligne As Long
    Dim col As Long
    Dim valeur As Variant
    ligne = Target.Row
    col = Target.Column
    valeur = Target.Value
    
    MsgBox " La cellule au coordonnées (ligne,colonne) :(" & ligne & "," & col & ")contient désormais la valeur : " & valeur
End Sub


PS: A l'avenir, pour poster ton code sur ce forum, merci de le faire en utilisant les balises de code.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

0
batifol13 Messages postés 10 Date d'inscription lundi 16 janvier 2012 Statut Membre Dernière intervention 17 décembre 2019
17 déc. 2019 à 20:41
Hello Jordane45,
Merci, j'ai essayé mais cela ne répond pas tout à fait à mes besoins. Je ne saurais pas comment l'adapter pour que la macro réagisse seulement si - en modifiant une cellule de ma colonne L - la colonne S renvoie un message d'alerte (est.non.vide). Là, cette macro réagit à toute entrée dans toute cellule de la page...
J'ai deux conditions concomitantes sur des colonnes différentes à remplir pour que le message d'alerte s'affiche.
> Si je rentre une donnée dans une des cellules de L ET SI la même ligne de la colonne S est non vide.
Sinon, pas besoin de message.

Est-ce que tu peux peut-etre m'aider en repartant de ma macro initiale? On n'est pas loin, la seule chose que je n'arrive pas à faire c'est éviter l'apparition de 18 box quand je remplis ma 18ème cellule.
Merci!
0
jordane45 Messages postés 38256 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 octobre 2024 4 693
17 déc. 2019 à 21:58
ici on veut bien aider mais pas le faire à ta place ..
Je pense que le code que je t'ai donné est suffisant simple à comprendre pour que tu sois capable de le mettre en pratique avec ton code initial....
dans l'exemple que je t'ai donné je te montre comment savoir à quelle ligne tu te trouves à quelle colonne et également la valeur de la cellule concernée....de là ça ne devrait pas être trop compliqué à l'adapter à tes besoins.

Reviens avec ce que tu auras essayé de coder et là on essaiera peut-être de t'aider si jamais ça ne fonctionne toujours pas.

et au cas où n'hésite pas à regarder sur internet il y a suffisamment de tutoriels pour que tu sois capable d'apprendre les bases de la programmation en visual Basic.
0
batifol13 Messages postés 10 Date d'inscription lundi 16 janvier 2012 Statut Membre Dernière intervention 17 décembre 2019
17 déc. 2019 à 22:35
OK très limite comme message - mais pas de souci, si tu ne veux pas le faire, alors ne fais pas. Là honnêtement, je n'ai pas encore de solutions, avec internet, google ou tes propositions. Mais peut-être qn d'autre?
0
jordane45 Messages postés 38256 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 octobre 2024 4 693 > batifol13 Messages postés 10 Date d'inscription lundi 16 janvier 2012 Statut Membre Dernière intervention 17 décembre 2019
17 déc. 2019 à 23:40
je ne vois pas en quoi ma réponse et limite .

sachant que comme je te l'ai signalé ici on aide...mais on ne réalise pas le travail à ta place ...
donc ici personne d'autre ne te donnera la solution toute faite.. si tu ne veux pas un minimum essayé par toi-même pourquoi le ferions nous pour toi ?
0