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 :

Bouton "annuler" qui supprime la dernière ligne saisie [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Bouton "annuler" qui supprime la dernière ligne saisie
    Bonjour je réalise un outils de dimmensionnement,

    J'ai creer des boutons afin que l utilisateur ajoute des lignes à plusieurs tableaux.
    Et j' ai créé un bouton annuler ("undo") qui permet à l'utilisateur d'annuler la dernière ligne ajouté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton7_Click()
    Application.Undo
    End Sub
    J'ai mis la propriété "TakeFocusOnClick" à false. ( Je ne sais pas a quoi cela sert mais j'ai lu qu il fallait la mettre).

    Cela ne marche pas, "erreur d'execution 1004"

    J'ai vu que cela peut etre une erreur par rapport à des droits d'utilisateur, ou peut-etre l'erreur viens de la methode?

    Merci

    Ps: je remarque que cette methode annule l'action de modif de la feuille d'excel , mais PAS l'action "vba" des boutons ajouts ligne

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    j'ai lu quelques infos la dessus et il semble que Application.Undo doit figurer en première ligne d'une macro. Essaye de te créer une macro que tu appelle dans ta procédure évènementielle. Cela dit, je ne suis pas persuadé que ça fonctionnera beaucoup mieux.

    Cordialement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Cela ne fonctionne pas , merci quand meme. Je pense pas qu 'il faut utiliser "undo" , Undo doit fonctionne uniquement sur des modifs sur feuilles je pense

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    bonjour,

    Citation Envoyé par Aide VBA
    Application.Undo, méthode
    Cette méthode annule la dernière opération commandée à partir de l'interface utilisateur.
    Syntaxe

    expression.Undo

    expression Variable qui représente un objet Application.

    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.
    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Ok, donc que dois-je utiliser comme code si je annuler la derniere action vba?

  6. #6
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Ce n'est pas possible !

    A moins de créer une usine à gaz où tu mémorises les états avant action ect...

    cordialement,

    Didier

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour, je pense que ton post fait suite à celui-ci.

    si c'est le cas une solution serait de déclarer la variable derlign en PUBLIC.
    tu la déclares en tout premier une fois au début de ta page de code, au dessus des macros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public derlign As Long
     
    Private Sub CommandButton1_Click()
    'le code du bouton
    End Sub
     
    Private Sub CommandButton2_Click()
    'le code du bouton
    End Sub
     
    Private Sub CommandButton3_Click()
    'le code du bouton
    End Sub
    'etc...
    ainsi la variable derlign garderas le N° de la dernière ligne insérée.
    ensuite dans le code de chaque bouton tu dois avoir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim vnom As String, vrech As Range, derlign As Long
    tu enlèves derlign dans la déclaration de tes variables et ce pour chaque bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim vnom As String, vrech As Range
    ensuite encore pour chaque bouton juste sous la déclarations des variables tu ajoutes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim vnom As String, vrech As Range
    derlign = 0
    enfin dans le bouton annuler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If derlign = 0 Then Exit Sub
    Rows(derlign).EntireRow.Delete
    derlign = 0
    remettre derlign à 0 permet de ne pas effacer plus de ligne que celle qui vient juste d'être ajoutée

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci c'est super comme d'hab.

    Vos explications sont très claires!

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

Discussions similaires

  1. Supprimer les dernières lignes d'un fichier
    Par eleana dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 03/11/2017, 10h55
  2. supprimer les dernières lignes vides
    Par buhrne dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/03/2008, 15h08

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