message d'alerte

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 7 novembre 2016, 08:40

Bonjour,

Procédure adaptée à la nouvelle configuration :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim k%, a%
    If Sh.Name Like "position*" Then
        If Target.Row < 4 Or Target.Row > 45 Or Target.Count > 1 Then Exit Sub
        If Sh.Name = "positions ADC" Then a = 1
        k = Target.Column
        Application.EnableEvents = False
        Select Case k
            Case 2
                If Target = "" Then
                    Target.Offset(, 6 + a).Resize(, 12).ClearContents
                End If
            Case 8 + a To 19 + a
                If Target <> "" Then
                    If Target.Offset(, 2 - k) = "" Then
                        MsgBox "Saisie erronée !", vbExclamation, "Nom absent"
                        Target.ClearContents
                    End If
                End If
        End Select
        Application.EnableEvents = True
    End If
End Sub
Elle se place désormais dans le module classeur (ThisWorkbook) puisque concernant plusieurs feuilles. On teste le nom de la feuille pour donner cours à la procédure (contenant "position"). Si le nom correspond, on s'assure que la modification se situe dans la plage de lignes 4-45 et n'affecte qu'une cellule.
On intervient selon la colonne concernée : colonnes 8 à 19, si rien en colonne 2, message d'alerte et effacement de la saisie. Une variable a (initialisée à 1 pour la feuille ADC et laissée à 0 dans les autres cas) permet de tenir compte du décalage de colonnes pour cette feuille. Si modif. colonne 2, si effacée, effacement des colonnes 8 à 19...

Cordialement.
engels_COGETISE BASE - Copie.xlsm
(174.7 Kio) Téléchargé 6 fois
E
Engels
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 1 novembre 2016
Version d'Excel : 2010

Message par Engels » 7 novembre 2016, 12:22

Bonjour, super c'est ce que je voulais. Juste un petit problème si je copie les cellules avec la petite croix dans le bas de la cellule et que je dépasse la dernière ligne contenant un nom je n'ai pas de message. J'ai fait un exemple dans la feuille "position 2-4" à la ligne 13 je n'ai pas de nom et le "X" reste apparent.

si cette amélioration est possible ce serais aux petits oignons
engels_COGETISE BASE - Copie.xlsm
(174.77 Kio) Téléchargé 3 fois
engels_COGETISE BASE - Copie.xlsm
(174.77 Kio) Téléchargé 9 fois
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 7 novembre 2016, 13:12

Si je la revalide : message et elle se supprime. C'est qu'elle devait préexister ! :D
La macro n'intervient qu'au changement. S'il y a une croix en erreur avant que la macro soit active, elle n'intervient pas tant que l'on ne modifie pas.

Cordialement.
E
Engels
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 1 novembre 2016
Version d'Excel : 2010

Message par Engels » 7 novembre 2016, 18:42

Bonjour,
Je pense qu'on ne sait pas compris, dans un tableau Excel on peut copié une cellule si on la saisie en bas a droite et l'on tire vers le bas par exemple. C'est dans cette situation que la macro ne fonctionne pas en la copiant en série, c'est une manipulation que je fait pour aller plus vite dans la saisie (une croix "X" dans le haut de la feuille et je la descend jusqu'en bas de la feuille à la limite de ligne du dernier nom).
J'ai remarquer que si une croix existe déjà elle ne sera pas supprimée et donc prise en compte, mais cette situation ne pourra pas exister dans la façon que j'utilise le dossier.

cordialement
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 7 novembre 2016, 21:58

Essaie cette version :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim k%, a%, c As Range
    If Sh.Name Like "position*" Then
        If Sh.Name = "positions ADC" Then a = 1
        Application.EnableEvents = False
        For Each c In Target.Cells
            If c.Row > 3 And c.Row < 46 Then
                k = c.Column
                Select Case k
                    Case 2
                        If c.Value = "" Then
                            c.Offset(, 6 + a).Resize(, 12).ClearContents
                        End If
                    Case 8 + a To 19 + a
                        If c.Value <> "" Then
                            If c.Offset(, 2 - k) = "" Then
                                MsgBox "Saisie erronée !", vbExclamation, "Nom absent"
                                c.ClearContents
                            End If
                        End If
                End Select
            End If
        Next c
        Application.EnableEvents = True
    End If
End Sub
C'est toi qui voulais quelque chose de simple... ! :lol:
E
Engels
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 1 novembre 2016
Version d'Excel : 2010

Message par Engels » 8 novembre 2016, 18:22

Bonsoir c'est mon problème je ne rend pas bien compte de la difficulté et quand je suis dedans parfois c'est dur! Quoiqu'il en soit, ça fonctionne, c'est juste ce qu'il me faut.
Donc un grand merci :wink:

Juste une petite chose j'ai sélectionné la macro et je l'ai collée et comme pour l'autre elle se mets en rouge. Pour que ça fonctionne je l'ai recopier, pourquoi elles se mettent en rouge et que j'ai une erreur de compilation?

MERCI encore
:btres:
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 9 novembre 2016, 08:54

Si la procédure est complète, aucune raison qu'elle se mette en rouge...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Message alerte
    par Nismo » 6 décembre 2018, 11:56 » dans Excel - VBA
    5 Réponses
    165 Vues
    Dernier message par ric
    6 décembre 2018, 14:55
  • Message alerte
    par Nismo » 9 décembre 2018, 14:28 » dans Excel - VBA
    13 Réponses
    386 Vues
    Dernier message par Nismo
    10 décembre 2018, 09:07
  • Message d'alerte
    par sophang » 13 mai 2016, 10:02 » dans Excel - VBA
    3 Réponses
    416 Vues
    Dernier message par MFerrand
    13 mai 2016, 14:31
  • Message d'alerte.
    par rahimpamelo » 21 septembre 2016, 10:48 » dans Excel - VBA
    5 Réponses
    403 Vues
    Dernier message par mdo100
    21 septembre 2016, 14:21
  • Message alerte
    par gnappoma » 20 février 2017, 15:55 » dans Excel - VBA
    2 Réponses
    288 Vues
    Dernier message par gnappoma
    20 février 2017, 16:54
  • Alerte message box
    par MARK_TK » 5 février 2016, 21:33 » dans Excel - VBA
    6 Réponses
    382 Vues
    Dernier message par MARK_TK
    7 février 2016, 09:15