Affichage d'un message d'alerte lors du premier encodage d'une valeur sur 1 ligne

Convents

XLDnaute Nouveau
Bonjour à toutes et tous,

J'ai un tableau avec en colonne A les noms des travailleurs et en colonne B jusque AF les journées 1 à 30 (ou 31) du mois en cours.

Dans ces colonnes (B à AF) on encode des n° de dossier. Cependant, je désirerais lorsque l'on encode pour la première fois l'une ou l'autre de 2 valeurs (ex CHI ou CHE) qu'une alerte soit donnée sur écran.
Cette alerte doit s'effectuer par travailleur (donc par ligne).

Pouvez-vous m'aider ?

Merci d'avance
 

Pièces jointes

  • modèle.xlsx
    11.6 KB · Affichages: 62
  • modèle.xlsx
    11.6 KB · Affichages: 70
  • modèle.xlsx
    11.6 KB · Affichages: 70

Robert

XLDnaute Barbatruc
Repose en paix
Re : Affichage d'un message d'alerte lors du premier encodage d'une valeur sur 1 lign

Bonjour Convents, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pt As Range 'déclare la variable pt (Plage du Tableau)
Dim pl As Range 'déclare la variable pl (Plage de la Ligne)
Dim che As Byte 'déclare la variable che
Dim chi As Byte 'déclare la variable chi
Dim cc As Byte 'déclare la variable cc (Comptage de Ch)

If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colone 1 (=A)
Set pt = Range("B4:AF" & dl) 'définit la plage du tableau
If Application.Intersect(Target, pt) Is Nothing Then Exit Sub 'si le changement a lieu en dehors de la plge du tableau, sort de la procédure
Set pl = Cells(Target.Row, 2).Resize(1, 31) 'définit la plage de la ligne éditée
che = Application.WorksheetFunction.CountIf(pl, "CHI") 'définit le nombre de "CHE" dans la ligne éditée
chi = Application.WorksheetFunction.CountIf(pl, "CHE") 'définit le nombre de "CHI" dans la ligne éditée
cc = che + chi 'définit le comptage des "CHE" + "CHI"
If cc > 1 Then Exit Sub 'si le comptage est supérieur à 1, sort de la procédure
MsgBox "Alerte !" 'message
End Sub

Le fichier :
 

Pièces jointes

  • Convents_v01.xlsm
    19.9 KB · Affichages: 64

Convents

XLDnaute Nouveau
Re : Affichage d'un message d'alerte lors du premier encodage d'une valeur sur 1 lign

Bonjour et Merci Robert,

C'est exactement ce que je désire pouvoir mettre en place.

Etant complétement débutant dans ce domaine, quelqu'un pourrait-il m'indiquer comment introduire ce code dans ma feuille excel.
Je vais dans virtual basic je présume et puis ?

Je ne trouve pas "Worksheet" et "change". Pouvez-vous m'indiquer comment je dois m'y prendre ?

Un tout grand merci d'avance.

Bien à vous
 

Convents

XLDnaute Nouveau
Re : Affichage d'un message d'alerte lors du premier encodage d'une valeur sur 1 lign

Re-bonjour,

En fait en regardant de plus près, le code ne fonctionne pas vraiment comme demandé. Si j'encode chi ou che, cela fonctionne correctement, mais si j'encode a ou truc, il m'affiche le message d'alerte alors qu'il ne doit apparaître qu'a la première introduction de CHI ou CHE sur une ligne.

Quelqu'un peut-il m'aider ?

Par ailleurs, ce tableau doit pouvoir être complété par plusieurs personnes et la macro n'est pas active directement à l'ouverture ce qui risque de me poser un problème tôt ou tard. Savez-vous comment faire pour que cette macro-ci soit active à l'ouverture ?

Merci beaucoup.
 

Si...

XLDnaute Barbatruc
Re : Affichage d'un message d'alerte lors du premier encodage d'une valeur sur 1 lign

salut

en attendant que Robert repasse par là ;),
un autre code pour remplacer le précédent
Code:
Private Sub Worksheet_Change(ByVal R As Range)
  If R.Count > 1 Then Exit Sub 
  If UCase(R) = "CHE" Or UCase(R) = "CHI" Then 'si... saisie en majuscule(s) et minuscule(s)
    If Application.CountIf(Rows(R.Row), "CHI") + Application.CountIf(Rows(R.Row), "CHE") > 1 Then Exit Sub
    MsgBox "premier cas", 64, "Pour information"
  End If
End Sub

Pour activer les macros voir Macro.jpg (pour la version 2010)
 

Pièces jointes

  • Macro.jpg
    Macro.jpg
    60.7 KB · Affichages: 72
  • Macro.jpg
    Macro.jpg
    60.7 KB · Affichages: 72

Convents

XLDnaute Nouveau
Re : Affichage d'un message d'alerte lors du premier encodage d'une valeur sur 1 lign

Bonjour et merci beaucoup Si...

Cela marche comme je l'imaginais. Le seul petit problème est que cette macro ne s'active pas automatiquement à l'ouverture du fichier. Et si je vais changer les paramètres, je cours un risques de sécurité avec toutes les autres macros.

N'y a t'il pas moyen de valider cette macro-ci uniquement ? Et ce quelque soit le poste de travail à partir duquel on ouvre le fichier car plusieurs utilisateurs seront amenés à compléter ce document.

Merci d'avance et bravo pour le site qui est une véritable mine d'or
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 896
Membres
101 833
dernier inscrit
sandra25