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 :

Copier Coller surprenant [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut Copier Coller surprenant
    Bonjour à tous et toutes

    Je copie d'un fichier à un autre une plage de données et j'ai des résultats très surprenants

    Voici tout d'abord la fonction qui copie les valeurs


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      'Copie les données depuis le fichier base vers le fichier de travail
         xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listemater").Range("A4:k1500").Value = xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("Listemater").Range("A4:k1500").Value

    Le fichier de base, dans mon exemple (liste OPR et RECE) ne comporte des données que sur les lignes 4 à 8

    Le fichier destinataire comprend bien les bonnes données sur les lignes 4 à 8 mais aussi :
    - des données aléatoires sur des lignes à partir de la ligne 52
    - des cellules marquées #N/A à partir de la ligne 400

    De plus, les numéros de lignes apparaissent en bleu et de nombreuses lignes disparaissent -59 à 76 par exemple-

    C'est grave docteur ?

    Merci de votre aide

    Daniel S

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Mets ton code en entier pour pouvoir faire un diagnostic

    De plus, les numéros de lignes apparaissent en bleu et de nombreuses lignes disparaissent -59 à 76 par exemple-
    Tu as un filtre.

    Je me demande pourquoi tu travailles avec une autre instance Excel xlApp

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    En complément de la réponse de mercatog, y a-t-il des lignes masquées dans les plages concernées de l'un ou l'autre classeur ?

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Rebonjour

    Voici le code en entier


    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
    Private Sub Commande224_Click()
    'Lancement OPR et RECEPTIONS
     
        Dim Rep As String
        Rep = ""
        Rep = Forms("FAffaire").Controls("Repertoire").Value
     
     
     
        '> Ouvre le fichier excel OPR de l'affaire
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
        xlApp.Workbooks.Open ("e:/1 - AFF/" & Rep & "/9-BASES/Liste OPR et RECE.xls")
        xlApp.Workbooks.Open ("e:/1 - AFF/" & Rep & "/9-BASES/Locaux.xls")
        xlApp.Workbooks.Open ("E:\1 - aff\AA divers novorest\00 - gestion affaires\00 Base\Modeles\NovoOPRmodele.xls")
     
     
        'Dim valeur As String
        'valeur = xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("Listemater").Range("B5").Value
        'MsgBox (valeur)
     
        'Effacer tout ce qu'il y a dans NovoOPRModele
        xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listemater").Range("A4:az6000").Clear
        xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listemater").Range("BB1").Clear
     
        'Copie les données depuis le fichier base vers le fichier de travail
         xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listemater").Range("A4:k1500").Value = xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("Listemater").Range("A4:k1500").Value
            'xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listelocaux").Range("A2:c6000").Value = xlApp.Workbooks("Locaux.xls").Worksheets("Loc").Range("A2:c6000").Value
        'xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Lots").Range("A3:az6000").Value = xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("Lots").Range("A3:az6000").Value
        'xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("MOV").Range("A1:az6000").Value = xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("MOV").Range("A1:az6000").Value
        'xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("MOE").Range("A1:az6000").Value = xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("MOE").Range("A1:az6000").Value
     
     
        'Colorie les cases dans le fichier
     
        xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("ListeMAter").Range("A4:K6000").Interior.ColorIndex = 40
        xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("ListeMAter").Range("A4:K6000").Borders.ColorIndex = 2
        xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("ListeMAter").Range("A4:K6000").RowHeight = 25
     
     
     
        'Copie le nom de l'affaire pour le retour
        xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listemater").Range("BB1").Value = Rep
     
        'Ferme les fichiers de travail
        xlApp.Workbooks("Liste OPR et RECE.xls").Close
        xlApp.Workbooks("Locaux.xls").Close
     
    End Sub

    Par ailleurs, la ligne 3 des fichiers propose un filtre pour trier un peu mes données au besoin

    A bientot

    Daniel

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Peut être il serait mieux de travailler avec les variables objet.
    Tu pilote excel à partir de VB?
    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
    Private Sub Commande224_Click()
    Dim XlApp As Object
    Dim WbOPR As Object, WbLoc As Object, WbNov As Object
    Dim Rep As String
     
    Rep = Forms("FAffaire").Controls("Repertoire").Value
    If Rep <> "" Then
        Set XlApp = CreateObject("Excel.Application")
        With XlApp
            .Visible = True
            'il faudra ajouter ici un test sur l'existence des fichiers à ouvrir
            Set WbOPR = .Workbooks.Open("e:/1 - AFF/" & Rep & "/9-BASES/Liste OPR et RECE.xls")
            Set WbLoc = .Workbooks.Open("e:/1 - AFF/" & Rep & "/9-BASES/Locaux.xls")
            Set WbNov = .Workbooks.Open("E:\1 - aff\AA divers novorest\00 - gestion affaires\00 Base\Modeles\NovoOPRmodele.xls")
     
            With WbOPR.Worksheets("Listemater")
                If .FilterMode Then .ShowAllData
            End With
     
            With WbNov.Worksheets("Listemater")
                If .FilterMode Then .ShowAllData
                .Range("A4:AZ6000").Clear
                .Range("A4:K1500").Value = WbOPR.Worksheets("Listemater").Range("A4:K1500").Value
                .Range("A4:K6000").Interior.ColorIndex = 40
                .Range("A4:K6000").Borders.ColorIndex = 2
                .Range("A4:K6000").RowHeight = 25
                .Range("BB1").Value = Rep
            End With
            WbNov.Close True
            Set WbNov = Nothing
            WbOPR.Close False
            Set WbOPR = Nothing
            WbLoc.Close
            Set WbLoc = Nothing
        End With
        XlApp.Quit
        Set XlApp = Nothing
    End If
    End Sub
    EDIT: Déclarer en Object les variable WbXX

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("Listemater").Range("A4:k1500").Copy
         xlApp.Workbooks("Liste OPR et RECE.xls").Worksheets("Listemater").Range("A4").pastespeciam xlPasteValues

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonsoir Daniel C

    Merci pour ces éléments

    Petit souci, j 'ai une erreur 438 sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xlApp.Workbooks("NovoOPRmodele.xls").Worksheets("Listemater").Range("A4").pastespeciam xlPasteValues
    D'ailleurs, excel me demande de me positionner sur la cellule A4 où je dois coller (je précise que ce code est lancé depuis Access)



    Mercatog, je regarde ce que tu as envoyé

    Merci à tous les deux pour votre aide

    Daniel

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

Discussions similaires

  1. [VB.NET] copier coller d'une valeur
    Par mic56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2004, 12h43
  2. [Swing]copier coller... dans le menu.
    Par parksto dans le forum Composants
    Réponses: 3
    Dernier message: 10/05/2004, 23h56
  3. Copier coller Fichier windows
    Par KPitN dans le forum Windows
    Réponses: 8
    Dernier message: 20/04/2004, 18h32
  4. Copier Coller une ligne d'une table avec modif ?
    Par nolan76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/03/2004, 17h34
  5. [Débutant] Conserver la couleur lors d'un copier coller
    Par ADIDASman dans le forum JBuilder
    Réponses: 2
    Dernier message: 21/05/2003, 19h13

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