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èmes pour rappatrier données.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut Problèmes pour rappatrier données.
    Bonjour à tous. Je débute en programmation VBA et dans le cadre d'un projet je tombe sur un os. Je vous explique le projet et je vous montre ensuite ce que j'ai déjà fait.
    Alors je dispose d'un fichier Excel qui me permet d'aller chercher des informations de la veille contenues dans un automate. Lorsque j'ouvre le fichier, une fenêtre s'ouvre et j'ai 3 options, 1/ rappatrier els infos, 2/ ne pas rappatrier et 3/ j'ai oublié lol....comme dans le service on ne travaille pas le weekend, on perd les infos de la production du vendredi et du samedi. Le but pour moi est evidemment de pouvoir les recuperer et enregistrer chaque jour le rappatriement des données sous le nom de la veille....compliqué hein.

    J'ai donc créé une macro de test en attendant.
    Je sais que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    permet de forcer sur "oui" une fenêtre "oui-non" au demarrage d'excel, est-ce que ça marchera pour ma fenêtre aussi?
    ensuite j'ai créé un code pour enregistrer sous le nom de la veille...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     monfichier = Day(Date - 1) & "_" & Month(Date - 1) & "_" & Year(Date - 1)
     
       ActiveWorkbook.SaveAs "*******\" & monfichier & ".Xls"
    Ca fonctionne mais est-il possible de supprimer la macro quand j'enregistre le projet sous l'autre nom car lorsque j'ouvre la copie la macro se lance aussi et j'en ai plus besoin lol....si on ne peut pas il me fausra alors copier les values des cellules et creer moi même un nouveau classeur puis les coller mais je ne sais pas faire.....

    Enfin, est-il possible de créer une tempo d'une quinzaine de secondes avant d'enregistrer sous car ça prend un certain temps avant de rappatrier les données depuis l'automate....

    Voila le code complet
    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
    Private Sub Workbook_Open()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 27/06/2007 par ****
    '
    With ActiveWorkbook
        Dim N As Integer
        Dim monfichier As String
     
    'Application.DisplayAlerts = False
    'essai d'une boucle pour tempo mais c'est pas terrible
        N = 0
        Do
        N = N + 1
        Loop Until N = 1000
     
        monfichier = Day(Date - 1) & "_" & Month(Date - 1) & "_" & Year(Date - 1)
     
       ActiveWorkbook.SaveAs "*******\" & monfichier & ".Xls"
     
        Workbooks.Close
    End With
     
    End Sub
    Je vous remercie d'avance.

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

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour

    ca ne va pas etre la meilleur solution que je vais te presenter
    mais bon

    pour lancer ta macro a l ouverture du classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_Open()
    f ActiveWorkbook.Name = "nom classeur.xls" then
    ton code
    end if
    end sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut
    Pas de problème, j'essaie ça demain au boulot.

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 30
    Par défaut
    si j'ai bien compris tn problème consiste en la suppression de ton macro (copie) après enregistrement. si c oui alors essaye de mettre ton macro dans un module (module1 par exemple), et dans le workbook_open mets ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Module1.copie  ' te lance la macro qui enregistre(saveas)
    With ThisWorkbook.VBProject.VBComponents
    .Remove .Item("module1") 'te supprime le module1 après enregistrement
    End With
    End Sub
    PS: faut activer la réference microsoft visuel basic for application extensibility 5.3

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut
    Bon j'ai quasiment tout réussit à faire....Merci Adilissimo, j'ai regardé mais je n'ai pas trouvé la bibliothèque au boulot.
    2 problèmes persistent, ceux qui s'y connaissent vont surement trouver les erreurs dans le code. Le fichier Test2 s'ouvre tous les matins à 6h30 via une tache windows....je me suis arrangé pour qu'il aille chercher les données dans l'automate sans me le demander et ça fonctionne....il s'enregistre sous le nom de la veille ok....par contre quand j'ouvre ensuite le fichier de la veille, lui ne doit pas aller chercher les données dans l'automate...il peut me le demander ou ne rien faire....lorsque je l'ouvre une première fois, il va les chercher automatiquement alors que je ne souhaite pas, je le ferme, si je l'ouvre a nouveau par contre il me demande si je veux aller chercher les données ou pas.....je fais "non" car je veux juste scruter ce qu'il y a dedans. Si je le ferme et que j'ouvre à nouveau mon fichier test2, il me demande à son tour si je veux aller chercher les données alors que dans la macro j'ai precisé qu'il ne devait pas le demander....bref il y a interraction avec les 2 fichiers....surement un problème de codage.....les experts trouveront surement. Merci.


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub Workbook_Open()
     
    '
    ' Macro1 Macro
    ' Macro enregistrée le 27/06/2007 par ******
    '
    With ActiveWorkbook
     
    If ActiveWorkbook.Name = "test2.xls" Then   'condition pour ne pas le faire sur la copie
     
        Dim monfichier As String 'Pour enregistrer sous un autre nom
        Dim debut As Long 'variables pour la tempo
        Dim fin As Long
     
    'je ne veux pas voir la fenêtre de rappatriement au démarrage mais le rappatriement se fait seul
    Application.AskToUpdateLinks = False
     
    'tempo de 10 secondes le temps de prendre les données
    debut = Timer
    fin = 10 'secondes
     
    Do While Timer < debut + fin
    DoEvents 'pour rendre la main au systeme
    Loop
     
    Application.DisplayAlerts = True
     
    'enregistrement sous un autre nom
        monfichier = Day(Date - 1) & "_" & Month(Date - 1) & "_" & Year(Date - 1)
       ActiveWorkbook.SaveAs "*****" & monfichier & ".Xls"
     
    'fermeture du classeur... excel par contre ne veut pas se fermer
        Workbooks.Close
        Application.Quit  'ne fonctionne pas
     
         End If
     
     'pour les copies, je souhaite voir la fenetre de rappatriement et dire NON
     
       If ActiveWorkbook.Name <> "test2.xls" Then
     
       Application.DisplayAlerts = True
       Application.AskToUpdateLinks = True
     
       End If
     
    End With
    End Sub

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut
    Citation Envoyé par adilissimo
    si j'ai bien compris tn problème consiste en la suppression de ton macro (copie) après enregistrement. si c oui alors essaye de mettre ton macro dans un module (module1 par exemple), et dans le workbook_open mets ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Module1.copie  ' te lance la macro qui enregistre(saveas)
    With ThisWorkbook.VBProject.VBComponents
    .Remove .Item("module1") 'te supprime le module1 après enregistrement
    End With
    End Sub
    PS: faut activer la réference microsoft visuel basic for application extensibility 5.3
    J'ai essayé le code avec un .copie et un .copy car j'ai trouvé la biblioatheque 5.3 mais j'ai une erreur de compilation "membre de méthode ou de données introuvable" sur le module1.copy.....
    Ma solution fonctionne toujours bancale donc je vais essayer autre chose...quelqu'un peut m'aider?
    -Copier les 2 feuilles de mon projet principal
    -Créer un nouveau projet
    -Coller les feuilles dedans
    -Enregistrer le nouveau projet sous
    -Fermer le tout

    Si ça me fait encore le même bug alors il me faudra essayer une derniere option...qui est de copier les .value des cellules mais je vais essayer les feuille d'abord.
    Si quelqu'un a une soluiton je suis preneur.
    Merci.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut
    J'ai à nouveau avancé et j'ai trouvé des réponses à mes question mais pas de solution definitive.
    En fait mon fichier d'origine, dans la moitié des cellules ce sont des liens allant vers un automate, et y compris quand je copie/colle les onglets, les liens restent et le fichier se connecte sur l'automate et prend les valeurs en cours.
    D'ou ma conclusion, il faut que je copie les valeurs des cellules pour ne pas qui'l me renvoie les liens. Voila mon code à l'heure actuelle:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Private Sub Workbook_Open()
     
    ' Macro1 Macro
    ' Macro enregistrée le 27/06/2007 par ******
    '
     
    '
     
    With ActiveWorkbook
     
    If ActiveWorkbook.Name = "test2.xls" Then   'condition pour ne pas le faire sur la copie
     
        Dim monfichier As String 'Pour enregistrer sous un autre nom
        Dim debut As Long 'variables pour la tempo
        Dim fin As Long
     
    'je ne veux pas voir la fenêtre de rappatriement au démarrage mais le rappatriement se fait seul
    Application.AskToUpdateLinks = False
     
    'tempo de 10 secondes le temps de prendre les données
    debut = Timer
    fin = 10 'secondes
     
    Do While Timer < debut + fin
    DoEvents 'pour rendre la main au systeme
    Loop
     
    'je copie les onglets dans un nouveau fichier
    Workbooks("test2.xls").Worksheets(Array("Feuil1", "Feuil2")).Copy
     
    'manque du code ici je suppose
     
    'fin manque de code
     
    'enregistrement sous un autre nom
        monfichier = Day(Date - 1) & "_" & Month(Date - 1) & "_" & Year(Date - 1)
       ActiveWorkbook.SaveAs "******" & monfichier & ".Xls"
     
     
    'fermeture du nouveau workbook
        ActiveWorkbook.Close
    'fermeture de l'ancien workbook sans sauvegarder
        ActiveWorkbook.Close savechanges:=False
    'fermeture d'excel
        Application.Quit  'ne fonctionne pas
     
         End If
     
     
     
    End With
    End Sub
    Donc je voudrais savoir ce qu'il faut que j'écrive pour que je puisse copier les valeurs des cellules quand je copie les onglets pour eviter de mettre à jour les liens.
    Si quelqu'un peut m'aider ça serait sympa.
    Merci.

Discussions similaires

  1. [XL-2007] Problème pour Importer Données Web
    Par BOUDHA26 dans le forum Excel
    Réponses: 3
    Dernier message: 01/09/2014, 21h15
  2. [XL-2003] Problème pour envoyer données sur internet
    Par coklin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/08/2009, 17h27
  3. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  4. Problème pour récuperer donnée dans un txt
    Par Maldus dans le forum Delphi
    Réponses: 4
    Dernier message: 15/10/2006, 21h19
  5. problème pour importer données excel dans Access
    Par sarah67 dans le forum Access
    Réponses: 8
    Dernier message: 20/02/2006, 08h17

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