Msgbox fonction de 2 colonnes
batifol13
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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!!
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:
- Msgbox fonction de 2 colonnes
- Fonction si et - Guide
- Faire 2 colonnes sur word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Inverser 2 colonnes excel - Guide
4 réponses
Bon aller... je vais être sympa:
Regarde ce que donne ceci
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
Bonjour,
Au lieu de faire un
contente toi de regarder la cellule modifiée ( via la variable target )
Au lieu de faire un
For Each cel
contente toi de regarder la cellule modifiée ( via la variable target )
Regarde ce que donne :
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
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
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!
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!
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.
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.