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 :

Impossible d'annuler dans une feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    INGÉNIEUR
    Inscrit en
    Août 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : INGÉNIEUR
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 37
    Par défaut Impossible d'annuler dans une feuille Excel
    Bonjour à tous.

    J'ai crée une macro VBA sous Excel 2003 qui me permet d'importer des données d'une base de données Access et qui met en forme les tableaux qui sont générés.
    J'ai en partie repris ce code: http://www.developpez.net/forums/d13...onnees-access/

    J'ai ajouté aussi quelques lignes dans la fonction QueryAccess pour spécifier les paramètres de mon tableau.
    De cette façon, j'ai généré 16 tableaux différents sur 16 feuilles distinctes.

    Toutefois, pour m'assurer que les largeurs des colonnes s'ajustent au contenu, j'ai inséré ce bout de code dans Microsoft Excel Objets - ThisWorkbook.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Target.EntireColumn.AutoFit
    End Sub
    En créant une nouvelle feuille, j'aimerais être en mesure de pouvoir faire des copier-coller, créer manuellement de nouveaux tableaux et de pouvoir annuler mes modifications (en utilisant Ctrl+Z) mais j'ai l'impression que le Autofit m'en empêche.

    Comment pourrais remédier à ce problème?

    Est-il possible de spécifier le Autofit seulement sur une feuille générée par VBA? Sinon, est-il possible de "désactiver" le Autofit à la fin de l'exécution de mon code?


    Merci et bonne journée!

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Bonjour,

    Cela m'étonnerait que Autofit soit responsable de ton problème.

    Ne quittes-tu pas une fonction ou une procédure avec EnableExents = False ?

  3. #3
    Membre averti
    Homme Profil pro
    INGÉNIEUR
    Inscrit en
    Août 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : INGÉNIEUR
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 37
    Par défaut
    Bonjour defluc,

    Non, je n'ai pas de fonction avec EnableExents = False.

    À quoi ça sert?

  4. #4
    Invité
    Invité(e)
    Par défaut
    un traitement par macro ne passe pas par le presse papier!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Target.EntireColumn.AutoFit
    End Sub
    je vien de faire un test ça vide bien le presse papier

  5. #5
    Membre averti
    Homme Profil pro
    INGÉNIEUR
    Inscrit en
    Août 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : INGÉNIEUR
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 37
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    un traitement par macro ne passe pas par le presse papier!
    Concrètement, qu'est-ce que ça veut dire?
    Comment puis-je remédier à la situation?
    As-tu un bout de code à me proposer?


    Bonne journée!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par davidbd Voir le message
    Concrètement, qu'est-ce que ça veut dire?
    Comment puis-je remédier à la situation?
    As-tu un bout de code à me proposer?


    Bonne journée!
    je confirme ça vide bien le presse papier!

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    EnableEvents (excuses la faute d'orthographe de mon précédent post) active ou désactive le déclenchement des évènements.

  8. #8
    Invité
    Invité(e)
    Par défaut
    il est toujours possible avec de positionner artificiellement le presse papier pour des données géré par macro. Mais la il s'agit de manipulation suivi d'une macro je t'avoue quand l'état je suis à dépourvu d’idées.

  9. #9
    Membre averti
    Homme Profil pro
    INGÉNIEUR
    Inscrit en
    Août 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : INGÉNIEUR
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 37
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    je confirme ça vide bien le presse papier!
    Ok....

    Ça ne règle toujours pas mon problème que je ne suis pas en mesure d'annuler la dernière opération.

    Je vous réexplique la situation.

    Je lance une macro qui importe mes données Access et qui les met en forme.
    Cette macro est lancée à l'aide d'un bouton.

    J'obtiens alors 16 feuilles distinctes qui présentent chacun 1 tableau (16 tableaux au total). La macro est terminée.

    Je crée manuellement une nouvelle feuille (On peut la nommer feuille 17).

    Je copie de l'information d'un autre fichier Excel.
    Je colle cette information dans la feuille 17.

    Je veux annuler le copier-coller que je viens de faire et ça ne fonctionne pas.

    Il est à noter que je ne désire pas annuler ce que ma macro fait. Les 16 tableaux demeurent intacts. Je veux pouvoir annuler (Ctrl+Z) sur une nouvelle feuille que je crée manuellement.

    Je ne crois pas que le presse-papier ait d'incidence dans mon travail.

    Pour le EnableEvents = False, est-ce que cela peut empêcher d'effectuer un retour en arrière?


    Merci et bonne journée!

  10. #10
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Je viens de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      Application.EnableEvents = False
      Target.EntireColumn.AutoFit
      Application.EnableEvents = False
    End Sub
    Cela ne change rien c'est bien AutoFit qui vide le presse-papier.
    Alors, la solution serait de placer cette instruction ailleurs dans le code.

  11. #11
    Membre averti
    Homme Profil pro
    INGÉNIEUR
    Inscrit en
    Août 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : INGÉNIEUR
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 37
    Par défaut
    Bonjour à tous,

    Pour le moment, j'ai simplement désactivé le Autofit (Mettre en commentaires) pour le bien de mon travail étant donné que j'ai déja toutes mes informations.

    Je vais voir si il est possible de mettre Autofit ailleurs dans mon code pour qu'il s'applique seulement aux feuilles qui sont générées par la macro.

    Il est à noter que ce n'est pas seulement le copier-coller qui ne fonctionne pas. Si je tape manuellement des caractères dans une cellule, je ne suis pas en mesure d'annuler.

    Merci pour votre aide et bonne journée!

  12. #12
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Si tu peux confirmer que, même avec le "Autofit" annulé, l'annulation de l'action n'est pas possible, c'est qu'il y a autre chose qui vide le presse papier.

    A creuser, cela devient intéressant comme investigation.

Discussions similaires

  1. [VBA-PP]Ecrire dans une feuille Excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/04/2006, 18h18
  2. [VB6]"Figer les volets" dans une feuille Excel
    Par maillardd dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 01/02/2006, 15h41
  3. Sélection de lignes dans une feuille Excel
    Par lerico dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 09h20
  4. [VBA]Userform mobile dans une feuille excel
    Par fikren dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/10/2005, 15h45
  5. Timer dans une feuille excel
    Par bbkenny dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 28/01/2005, 10h43

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