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 :

Problème avec thisworkbook [XL-MAC 2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur aviation civile
    Inscrit en
    Novembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur aviation civile
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 52
    Par défaut Problème avec thisworkbook
    Bonjour je rencontre un problème avec cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLignEchecs = ThisWorkbook.Sheets("Echecs").Range("A" & Rows.Count).End(xlUp).Row
    elle me renvoie une erreur. Pour mieux comprendre. Je jongle entre deux documents excel. Avec les versions précédentes la commande me permettait de pointer vers le document avec le code. Mais depuis la mise à jour j'ai une erreur dans le code alors que quand je lance la commande manuellement elle fonctionne. J'ai l'impression qu'il y a un problème avec la désignation des documents. Quand je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLignEchecs = Range("A" & Rows.Count).End(xlUp).Row
    seulement alors j'ai un résultat mais de la feuille que j'ai ouverte dans le code.

    Merci d'avance pour votre aide,

    Xavier

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par xavion Voir le message
    elle me renvoie une erreur.
    Quel est le message d'erreur ?

    depuis la mise à jour j'ai une erreur
    Quelles ont été les modifications ?

    Est-ce que la feuille "Echecs" se trouve dans le même classeur que la macro qui contient cette ligne de code ?

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 732
    Par défaut
    Bonjour a tous!
    Avez vous essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLignEchecs = ThisWorkbook.Sheets("Echecs").Range("A" & Rows.Count).End(xlUp).Row
    par: ("classeur1" étant à remplacer par le nom du classeur sur lequel se trouve la feuille Echecs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerlignEchecs = Workbooks("classeur1").Sheets("Echecs").Range("A" & Rows.Count).End(xlUp).Row
    Cordialement

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Outre la remarque de Menhir .

    Comment est déclarée la variable
    ?

    seulement alors j'ai un résultat mais de la feuille que j'ai ouverte dans le code.
    Tu en déduiras l'importance d'un bon rattachement des objets Worksheet et Range.

    (Je le répète presque tous les jours)

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur aviation civile
    Inscrit en
    Novembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur aviation civile
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 52
    Par défaut
    Bonsoir et merci pour votre message,


    Citation Envoyé par Menhir Voir le message
    J'ai mis cette macro dans le "this workbook" et pas dans un module. ça marchait jusqu'à présent et oui elle est dans le même classeur que la macro. J'ouvre un autre fichier par le biais de la macro et je compare les deux pour traiter des données.

    Citation Envoyé par Transitoire Voir le message
    Bonsoir et merci pour votre réponse. Votre proposition me retourne une erreur 9.

    Citation Envoyé par MarcelG Voir le message
    Hello et merci,

    As integer pour la variable. Oui je remarque bien qu'il y a un problème. C'est quand même fou que tout marche sous office 2011 et que ça plante pour 2016 et plus.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par xavion Voir le message
    Quel est le message d'erreur ?
    Erreur 400
    Quel est le MESSAGE d'erreur ?

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur aviation civile
    Inscrit en
    Novembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur aviation civile
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 52
    Par défaut
    Bonjour,
    j'ai juste une fenêtre qui s'ouvre avec "Microsoft visual basic erreur 400".

    Citation Envoyé par Menhir Voir le message
    Quel est le MESSAGE d'erreur ?

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Si une macro fonctionnait et que, sans que RIEN ne soit modifié, elle se mets à ne plus fonctionner, la seule solution est d'appeler un marabout pour faire désenvouter le PC.

    Plus sérieusement, il n'est pas possible de savoir pourquoi cette ligne ne fonctionne pas avec un code aussi simple.
    Le problème peut venir d'une modification dont tu ne parles pas (sans doute parce qu'elle te semble insignifiante).
    Jette aussi un coup d'oeil dans les bibliothèques chargées (Outils > Références) pour voir s'il n'y en a pas une marquée "MANQUANTE", ce qui aurait pu être provoqué par la migration que tu évoques.
    Ca peut venir aussi d'une ligne précédente dans le code ou de la nature de l'évènement qui déclenche la macro ou de nombreux autres éléments.

    Sans plus d'info, impossible de savoir.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur aviation civile
    Inscrit en
    Novembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur aviation civile
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 52
    Par défaut
    Bonsoir Menhir,

    elle marchait sous office 2011 pour mac. J'ai rien changé. Avec Catalina j'ai été obligé de changer d'office et patratra.
    Merci pour l'aide. J'ai regardé les références et rien de manquant malheureusement.

    Citation Envoyé par Menhir Voir le message
    Si une macro fonctionnait et que, sans que RIEN ne soit modifié, elle se mets à ne plus fonctionner, la seule solution est d'appeler un marabout pour faire désenvouter le PC.

    Plus sérieusement, il n'est pas possible de savoir pourquoi cette ligne ne fonctionne pas avec un code aussi simple.
    Le problème peut venir d'une modification dont tu ne parles pas (sans doute parce qu'elle te semble insignifiante).
    Jette aussi un coup d'oeil dans les bibliothèques chargées (Outils > Références) pour voir s'il n'y en a pas une marquée "MANQUANTE", ce qui aurait pu être provoqué par la migration que tu évoques.
    Ca peut venir aussi d'une ligne précédente dans le code ou de la nature de l'évènement qui déclenche la macro ou de nombreux autres éléments.

    Sans plus d'info, impossible de savoir.

  10. #10
    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,

    une grosse différence entre 2011 et 2016 c'est la gestion des fenêtres passée de MDI en SDI.
    Entre autres bugs, en SDI il lui arrive de perdre les pédales lorsqu'on joue à faire des .Activate ou des .Visible= sur les feuilles.
    Est-ce le cas ?
    On croit qu'une feuille est active mais lui reste à cheval entre les deux. il l'affiche mais se sert de l'ancienne, avec donc des effets bizarres.
    Si ça lui arrive sur les feuilles, pourquoi pas sur les classeurs aussi...

    Dans certains cas, après un .Activate, un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Set win = Application.ActiveWindow
        win.Visible = False
        win.Visible = True
    rétabli la situation.
    eric

  11. #11
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 732
    Par défaut
    Bonsoir, d'où la nécessité d'éviter pour des raisons de rapidité d'utiliser les principes par défaut qui fonctionne sous une version et plus forcément sous la nouvelle.
    exemple: il vaut mieux me semble-t-il
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Classeur1").Worksheets("Feuil1").Range("A1").Value = 4
    Que d'écrire en se disant que le classeur actif est classeur1 et value est le fonctionnement par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Range("A1") = 4
    Enfin, moi ce que j'en dit.

    Cordialement

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur aviation civile
    Inscrit en
    Novembre 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur aviation civile
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 52
    Par défaut
    Hello all,

    bon j'ai tout renommé avec les chemins entiers et sans utiliser thisworkbook et ça marche!
    Je trouve ça quand même fou que Microsoft ne communique pas sur les différences aussi importantes entre deux versions de VBA.
    J'ai pas trop compris les histoires de changement SDI en MDI mais ça doit dépasser mon niveau de compétences.

    Merci à tous,
    Xav

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

Discussions similaires

  1. [Toutes versions] Problème avec thisworkbook.activate
    Par leblesois dans le forum Excel
    Réponses: 8
    Dernier message: 29/06/2019, 23h15
  2. [XL-2007] Problème avec code placé dans "ThisWorkbook"
    Par Fred4345 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/02/2012, 17h41
  3. [XL-2003] problème avec des feuilles du type "Thisworkbook" dans un meme classeur !
    Par Krokro dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/08/2009, 02h46
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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