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 :

#N/A Lors de l'actualisation de BD Access et la copie de data dans une autre feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste de données
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut #N/A Lors de l'actualisation de BD Access et la copie de data dans une autre feuille Excel
    Bonjour à tous,

    Je rencontre un petit problème qui me bloque dans l’exécution d'un code. L'idée de la macro étant d'actualisé 3 fichiers connexion Access selon une valeur prédéfinie auparavant. Un template est déjà préparé et possède des formules en ligne 8. une fois l'actualisation terminée, je demande à la macro de drop down les formules et de copier le tout sur un autre fichier et de fermer cette page.

    Lorsque j'utilise la méthode ligne pas ligne (F8), tout se passe à merveille. Les valeurs envoyées sur l'autre fichier fonctionnent parfaitement. Mais lorsque que je laisse tourner la macro "toute seule", les valeurs des recherchesV n'ont pas le temps de se mettre à jour et renvoient des #N/A sur mon fichier de destination. J'ai tenté en vain de placer un temps d'attente dans la macro et également de faire un calcule sur la feuille.

    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
    28
    Sub Enregistrement_ICC()
    'Ouverture du fichier ICC
        Workbooks.Open Filename:= _
            "T:\Support Achats\Rapports (Modèles)\Part Listings\ICC - By Category\!!! ICC_PartListing_Template_V2.0.xls"
        Windows("!!! ICC_PartListing_Template_V2.0.xls").Activate
        Range("A2").Value = VC
    'On va chercher la variable VC comme catégorie à extraire
     
    'Copie des VC+Part dans le fichier ICC
    Workbooks("!!! ICC_PartListing_Template_V2.0.xls").Sheets("Recherche").Range("A8", "A" & nbLignes + 8) = Workbooks("Second_WS.xlsm").Sheets("Worksheet").Range("C13", "C" & nbLignes + 12).Value
        Range("B8:Q8").Select
        Selection.AutoFill Destination:=Range("B8", "Q" & nbLignes)
     
        Application.Wait Time + TimeSerial(0, 0, 3)
    ActiveWorkbook.RefreshAll
    Sheets("Recherche").Calculate
        Sheets("recherche").Copy After:=Workbooks("Second_WS.xlsm").Sheets("Item_Detail_Report")
        Sheets("recherche").Name = "Status"
        Cells.Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
     
        'Workbooks("Second_WS.xlsm").Sheets("Status").Range("A8", "Q" & nbLignes) = Range("A8", "Q" & nbLignes).Value
     
        Workbooks("!!! ICC_PartListing_Template_V2.0.xls").Close False
     
    End Sub
    J'ai tenté d'inverser l'ordre et de faire plusieurs modifications (copier la feuille à la place de copier les data, ect...). Tout fonctionne jusqu'à ce que je la laisse tourner toute seule.

    Auriez-vous une solution à me proposer svp ? Ci-dessus se trouve le dernier draft après pleins de tests...
    Un grand merci à vous !

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 495
    Par défaut
    Bonjour,

    Essayer en ajoutant l'instruction DoEvents à la ligne 13, et éventuellement sur les lignes 8 et 17. A n'utiliser que là où c'est indispensable.

    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste de données
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut
    Bonjour Eric,

    Merci pour la réponse !
    j'ai essayé et malheureusement, cette solution ne fonctionne pas.
    J'envisage de créer des vlookup sur le fichier de destination, tout se mettrait théoriquement à jour à la fin de la macro, mais ça veut dire que je ne ferme pas le fichier...

    Si quelqu'un pense à une autre solution, je suis preneur, sinon un grand merci pour avoir pris le temps de regarder.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 495
    Par défaut
    Bonjour,

    Autre possibilité: placer après la ligne 16 (.Calculate) l'une ou l'autre de ces 2 instructions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoEvents 
    If Not Application.CalculationState = xlDone Then DoEvents
    Cordialement.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste de données
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut
    Bonjour,

    J'ai essayé cette solution, cela ne fonctionne pas. Le contenu des cellules continu de s'actualiser à la fin de la macro. J'ai également tenté un Application.ScreenUpdating = True (ne sait-on jamais) en vain.

    Existe t-il un moyen "d'arrêter la macro" avant qu'elle ne reprenne ? Une méthode différente d'une pause qui ne semble pas fonctionner. Ce n'est pas l'idéal mais un msgbox peut être ?

    Merci pour l'aide !

    Edit : Msgbox ne fonctionne pas

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 495
    Par défaut
    Bonjour,

    Pour ma part, pas vraiment d'autres idées.
    Placer plusieurs Wait, plus longs ?
    Placer une sauvegarde intermédiaire ?
    Fractionner la procédure en plusieurs appelées ensuite à l'aide de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.OnTime Now + TimeValue("00:00:05"), "Procédure_1"
    Application.OnTime Now + TimeValue("00:00:10"), "Procédure_2"
    ...
    Cordialement.

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 346
    Par défaut
    Hello,


    Et si tu forces l'arrêt du calcul (en VBA), puis tu le relances juste avant de récupérer les valeurs, ça ne fonctionne toujours pas ?

    Généralement, quand tu relances le calcul automatique, le système "se bloque" (à mon souvenir) le temps que le calcul se termine.

    A tester
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Décembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste de données
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2018
    Messages : 4
    Par défaut
    Edit :
    Les temps d'attentes plus long ne fonctionnent pas. Les calcules se mettent vraiment à jour au moment même où la macro finie.
    La sauvegarde intermédiaire, du moins comme je l'entends, poserait un soucis. Je travail sur un template en lecture seule, l'utilisateur peur choisir d'enregistrer son fichier après l'avoir travaillé.
    En ce qui concerne le fractionnement de la procédure, jamais testé. Je ferai quelques recherches et je testerai, merci pour l'idée.

    @illight Merci pour l'idée, le test a été fait mais sans succès...

    En attendant, je suis parti sur 2 macros différentes. L'utilisateur doit les lancer toutes les deux (mais on est d'accord que ce n'est pas traumatisant non plus )

    Merci pour l'aide !

Discussions similaires

  1. [XL-MAC 2011] copier la valeur d'une cellule dans une autre et pouvoir l'actualiser
    Par Aurore24 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/01/2012, 11h14
  2. Réponses: 4
    Dernier message: 10/05/2008, 02h12
  3. Réponses: 9
    Dernier message: 30/03/2008, 20h30
  4. erreur lors de la recuperation d'une $ dans une autre page
    Par boubourse92 dans le forum Langage
    Réponses: 2
    Dernier message: 06/12/2007, 12h41
  5. Réponses: 2
    Dernier message: 01/06/2007, 09h34

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