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 :

Workbook_Open et copy paste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Par défaut Workbook_Open et copy paste
    Bonjour,
    J'ai un problème avec la procédure "Workbook_Open" et l'instruction Copy/paste.
    En effet, je voudrais selectionner une plage sur la feuille active, puis créer un nouveau document, et coller cette plage sur le nouveau document crée.
    Le code ci-dessous fonctionne quand j'utilise un simple module, mais ne fonctionne plus quand je le met dans la procédure "Workbook_open"afin qu'il s'execute à l ouverture du document ==> parce le programme s execute bien à l ouverture, mais il ne me copie que des cellules vides sur le nouveau document.
    Pourriez vous y jeter un coup d'oeil SVP?

    D'avance 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
    Private Sub Workbook_Open()
    Dim Fiche As Excel.Workbook
    Dim JP As Integer
        Dim Chemin As String
        Dim I As Integer
        Dim R As Integer
        Dim DD As Date
    ' Chemin
        Chemin = ThisWorkbook.Path
    ' JR et JP
        Windows("Pronostics.xls").Activate
        Sheets("Feuil3").Select
            Feuil3.Cells(3, 5).Value = "=today()"
                For I = 4 To 200
                    If Cells(I, 5).Value = Cells(3, 5).Value Then
                        JP = Cells(I, 7).Value
                        DD = Cells(I, 8).Value
                    End If
                Next I
     
        Windows("Pronostics.xls").Activate
            Sheets("Feuil4").Select
     
    ' copier le resultat vers un autre fichier excel
        Range("A1:M20").Select
        Selection.Copy
        Workbooks.Add
        ActiveSheet.Paste
     
     
    'Enregistrement sous Resultat J-..
        ActiveWorkbook.SaveAs Filename:= _
        Chemin & "\Pronos\Pronos-J" & JP & ".xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        ActiveWorkbook.Close
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Seulement pour la copie (je n'ai plus le tps de regarder le reste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Workbooks.Add
        ' copier le resultat vers un autre fichier excel
        Windows("Pronostics.xls").Sheets("Feuil4").Range("A1:M20").Copy Activesheet.Range("A1")
    Remplace avantageusement les lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Windows("Pronostics.xls").Activate
            Sheets("Feuil4").Select
     
    ' copier le resultat vers un autre fichier excel
        Range("A1:M20").Select
        Selection.Copy
        Workbooks.Add
        ActiveSheet.Paste
    Bon après-midi

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut pontoise et le forum
    Tu veux faire quoi avec ta macro ?
    On n'est ni dans ta tête, ni devant ton écran!
    Ta macro ne génère pas d'erreur.
    Si elle ne copie rien c'est... qu'elle n'a rien à copier.
    Mais je soupçonne une erreur de raisonnement, et comment faire si on a pas le raisonnement prévu ?
    euh...
    Feuil3.Cells(3, 5).Value = "=today()"
    serait avantageusement remplacé par
    Feuil3.Cells(3, 5).formula = "=today()"
    T'es en anglais ?
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Par défaut
    Salut Gorfael,
    Ce n est pas la peine d etre desagreable ....ce nest pas constructif...
    Je me croyais pourtant clair dans mon message.
    En effet, je voudrais faire ceci à l'ouverture du fichier Excel:
    1) Copier une plage (A1:M20) avec des valeurs dedans.
    2) Créer un nouveau document Excel.
    3) Coller ma plage (A1:M20) sur le nouveau document crée.
    Mon problème est que quand j ouvre mon fichier avec le worbook_open:
    1) La plage (A1:M20) est copiée.
    2) Le nouveau document Excel est crée.
    3) Mais je n'ai aucune valeur dans ce nouveau fichier, alors qu'il y a bien des valeurs dans la plage du fichier source (ptonostics).

    Pour information, quand je place mon code dans un simple module (hors la procédure workbook_open), cela fonctionne bien et j'ai bien un nouveau document avec les valeurs de ma plage du fichier source.

    Est-ce plus clair maintenant?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut pontoise et le forum
    Ce n est pas la peine d etre desagreable ....ce nest pas constructif...
    je ne pensais pas être désagréable. Au lieu de penser qu'on t'en veut, réflèchit sur ce qu'on demande.
    Pas la peine de remettre la même chose en changeant les mots, ça ce n'est pas productif.
    quelle feuille ?
    Chez moi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1:M20").Copy
        Workbooks.Add
        ActiveSheet.Paste
    Fonctionne sans aucun problème => ça ne vient pas du code mais des cellules copiées.
    A+

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par pontoise
    Pour information, quand je place mon code dans un simple module (hors la procédure workbook_open), cela fonctionne bien et j'ai bien un nouveau document avec les valeurs de ma plage du fichier source.
    Est-ce plus clair maintenant?
    Très clair... parce que normal. Place ta macro dans un module standard et un appel à cette macro dans l'événement Open du classeur dans Thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Workbook_Open()
        LaMacro
    End sub
    J'ai déjà donné l'explication plusieurs fois alors je me répète :
    A l'ouverture du classeur, selon la charge du µp les feuilles de calculs ne sont pas reconnues dans Thisworkbook, tandis que le simple appel à une macro placée dans un module standard permet cette reconnaissance. C'est ainsi que j'interprète le fait qu'un code placé dans Workbook_Open ne fonctionne "pas toujours". Et il semble que plus les micros sont rapides, plus le phénomène se produit...
    Une simple observation au cours des ans...

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Par défaut
    Merci Ouskel,
    ça marche.
    Merci encore une fois.

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

Discussions similaires

  1. copy/paste dans un composant text avec html
    Par xixi31 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 05/01/2009, 16h43
  2. Réponses: 13
    Dernier message: 10/11/2006, 09h24
  3. [VBA-E] Probleme avec l'activate d'un classeur ouvert pour un copy paste
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/08/2006, 22h31
  4. [VBA-E] Probleme COPY PASTE d'une feuille à une autre
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 17h56
  5. [VBA] word automation copy/paste
    Par Lysis dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/09/2005, 12h45

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