IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Message d'alerte pour tout remplacement d'une cellule déjà occupée [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Message d'alerte pour tout remplacement d'une cellule déjà occupée
    Bonjour à tous,

    Je cherche un moyen d'avoir un message d'alerte (message_box) dés que l'on copie une donnée sur une case déjà occupée

    Que ce soit un texte tapé, un copié-collé ou un étirement ....

    Vous auriez ça dans vos tiroirs ?

    Milles mercis

    Ps: le message_box je l'ai déjà

  2. #2
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Je pense avoir trouvé tout seul....Si ça peut aider QQun jour
    Enfin, tout seul... À partir d'un code qui m'avait été proposé sur un forum...J'en remercie son auteur dont j'ai oublié le nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells(1, 1) <> "" Then
        Reponse = MsgBox("Voulez-vous supprimer ?", vbYesNo)
        If Reponse = vbNo Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
     
            Else
     
          If Target.Cells(1, 1) = "" Then
        Reponse = MsgBox("Voulez-vous supprimer ?", vbYesNo)
        If Reponse = vbNo Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
       End If
        End If
    End If
    End If
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Plus propre Reste la condition cellule occupée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells(1, 1) <> "" Or Target.Cells(1, 1) = "" Then
        Reponse = MsgBox("Voulez-vous modifier ?", vbYesNo + vbDefaultButton2 + vbInformation)
        If Reponse = vbNo Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
     
     
    End If
    End If
     
    End Sub

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 572
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 572
    Par défaut
    Bonjour

    Je pense reconnaitre mon code...

    Attention à l'origine il était pour une suppression et pouvait fonctionner en cas de suppression par frappe du contenu d'une ou plusieurs cellules.

    Si on utilise une copie rien ne prouve que l'ensemble des cellules que l'on copie soit vide : comme de façon générale il ne vient pas à l'idée de copier une plage dont la 1ère cellule est vide, j'ai zappé ce cas mais il existe et dans ce cas cela fonctionne mais si on copie une page dont la 1ère cellule est non vide cela ne marche pas. Il faudrait tester toutes les cellules de Target dans une boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Cells(1, 1) <> "" Or Target.Cells(1, 1) = ""
    n'a pas de sens car un des deux est forcément vrai donc test inutile.

    Il faudrait donc différencier le cas ou target n'a qu'une cellule et dans ce cas "" est une suppression (éventuellement de rien...)
    Pour n cellules ce peut être une suppression (si toutes les cellules de target sont=""), une saisie ou une copie et dans ces cas il faudrait stocker les valeurs de target et son address, annuler l'opération, vérifier cellule par cellule s'il y avait quelque chose et si rien dans toutes, donc plage vierge, remettre les valeurs telles que saisies ou copiées par l'utilisateur.

    C'est un peu usine à gaz... sachant qu'on peut copier une ou colonnes ou lignes complètes...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. message d'alerte pour heure de rappel
    Par rachidalliance dans le forum VBA Access
    Réponses: 0
    Dernier message: 16/07/2010, 19h44
  2. [A-03] Message d'alerte pour une valeur
    Par Hombe dans le forum IHM
    Réponses: 4
    Dernier message: 13/01/2009, 11h34
  3. cliquer sur un bouton pour tout selectionner dans une liste multiple
    Par PAYASS59 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2007, 15h33
  4. Réponses: 2
    Dernier message: 25/05/2006, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo