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 :

Undo désactivé


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    coordinateur études
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : coordinateur études

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut Undo désactivé
    Citation Envoyé par unparia Voir le message
    Bonjour
    Ta dernière action (modification du style et non de la valeur) n'est pas réversible -->> pas de "marche arrière" (Undo) , donc.
    Et puisque ton évènement Change n'est pas limité à une plage de données, ma foi, tu t'en vas ainsi de cellule en cellule, sans jamais avoir de Undo disponible.
    Subordonne donc ce traitement à une plage de cellule (conditions sur l'objet Target) et tu retrouveras ton bouton "undo" lors de la modification de la valeur de toute autre cellule non comprise dans Target.
    Bonjour,
    j'ai le même problème.
    Je suis complètement néophyte en VBA et suis arrivé à récupérer et adapter un exemple de programmation pour mon besoin et ça fonctionne, mais j'ai le même soucis de "Undo" qui ne fonctionne plus et j'ai du mal à réaliser une correction avec vos explications.

    Par avance merci de votre retour.

    Nom : Capture.PNG
Affichages : 886
Taille : 84,2 Ko

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Marcello

    Ouvre donc ton aide VBA à la rubrique Application.Undo, méthode, lis-en attentivement son paragraphe "Remarque" et tu en connaîtras la raison.

  3. #3
    Candidat au Club
    Homme Profil pro
    coordinateur études
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : coordinateur études

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut
    Bonjour Unparia,
    merci pour votre réactivité et votre retour.
    J'ai pris le temps de trouver et lire ce que vous m'avez indiquer, mais malheureusement ça ne m'éclaire guère plus (je suis vraiment néophyte).

    Vous proposez de je cite: "subordonne donc ce traitement à une plage de cellule (conditions sur l'objet Target) et tu retrouveras ton bouton "undo" lors de la modification de la valeur de toute autre cellule non comprise dans Target.": la solution est sûrement là, mais comment coder ça?

    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
    23
    24
    25
    26
    27
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
       If Not Intersect(Target, Range("L3:L500")) Is Nothing And Target.Count = 1 Then
        Me.ListBox1.MultiSelect = fmMultiSelectMulti
        Me.ListBox1.List = Sheets("BD").Range("A2:A7").Value
        a = Split(Target, " ")
        If UBound(a) >= 0 Then
          For i = 0 To Me.ListBox1.ListCount - 1
            If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then Me.ListBox1.Selected(i) = True
          Next i
        End If
        Me.ListBox1.Height = 100
        Me.ListBox1.Width = 100
        Me.ListBox1.Top = Target.Top
        Me.ListBox1.Left = Target.Left + Target.Width
        Me.ListBox1.Visible = True
      Else
          Me.ListBox1.Visible = False
      End If
     End Sub
     
    Private Sub ListBox1_Change()
     For i = 0 To Me.ListBox1.ListCount - 1
       If Me.ListBox1.Selected(i) = True Then temp = temp & Me.ListBox1.List(i) & "  "
     Next i
     ActiveCell = Trim(temp)
     End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    malheureusement ça ne m'éclaire guère plus (je suis vraiment néophyte).
    Ah .
    néophyte en français également, pour ne pas comprendre le sens de ceci :
    Remarques


    Cette méthode n'annule que la dernière opération commandée par l'utilisateur avant l'exécution de la macro et doit figurer en première ligne dans la macro. Elle ne peut être utilisée pour annuler des commandes Visual Basic.

  5. #5
    Candidat au Club
    Homme Profil pro
    coordinateur études
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : coordinateur études

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut
    OK.
    merci quand même pour votre étal de matière grise qui ne sert malheureusement à personne!

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    qui ne sert malheureusement à personne
    Dans ce cas :ne remercie alors pas, si cela ne t'a pas servi.

  7. #7
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonsoir,

    Citation Envoyé par unparia Voir le message
    Dans ce cas :ne remercie alors pas, si cela ne t'a pas servi.
    Chacun est libre de remercier qui il veut.
    Chacun est libre d'aider comme il le souhaite.
    Par contre il serait préférable de rester courtois et respecter ceux qui ont moins d'expérience, encore une fois.

    Pour le code, placez le entre balise [code] (le bouton # dansl 'éditeur), c'est plus lisible qu'une image.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    la solution est sûrement là, mais comment coder ça?
    C'est déjà ce que tu fais avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Range("L3:L500")) Is Nothing And Target.Count = 1 Then
    Sur des modifs en dehors de L3:L500 tu peux faire Ctrl+z.
    Dès que tu cliques dans L3:L500 là tu perds toute la pile des annulations.

    Si tu veux récupérer Ctrl+z partout n'utilises pas SelectionChange
    Met ta macro de maj sur un bouton que tu appelles au coup par coup.
    Ou bien sur le Worksheet_Deactivate. Ta maj se fera en quittant la feuille.
    Au lancement de la macro tu perdras toujours les annulations, mais au moins tu es maître de l'action.
    eric

Discussions similaires

  1. Désactiver la multi-sélection d'une grille
    Par Riko dans le forum Composants VCL
    Réponses: 6
    Dernier message: 17/06/2003, 09h47
  2. Comment désactiver Ctrl+Alt+Del sous Windows XP
    Par ETOKA dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 04/06/2003, 13h34
  3. Désactivation de la souris
    Par mika dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2003, 13h15
  4. Désactiver les touches F1, F2, F3, F4, F5 dans IE
    Par ZiZouJH dans le forum Flash
    Réponses: 7
    Dernier message: 17/02/2003, 09h59
  5. Réponses: 8
    Dernier message: 17/05/2002, 09h08

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