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 :

Erreur copier coller vba [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut Erreur copier coller vba
    Bonjour,

    J'ai un programme VBA qui doir être capable de chercher des infos dans d'autres doc excel ( en PJ le doc "MC_Shootage) et les coller dans un doc commun intitulé "MC_Commun". Et cela se fait soit par date, soit pas n° semaine.

    Pour le N° Semaine tout fonctionne mais, pour la date (module 2 du programme) le programme ne me colle aucune données.
    Voici le programme :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Option Explicit
    Sub Macro1()
     
    'Identification des chemins et des fichiers
     
        Dim Chemin As String, WbDestination As Workbook, WbSource As Workbook
        Dim Fichier(1 To 1) As String
        Dim i As Integer
        Dim cel As Range
        Dim LaDate As String, L As Long, x As Long
        Set WbDestination = ThisWorkbook
        L = WbDestination.Worksheets("Donnees").Range("A65536").End(xlUp).Row + 1
        WbDestination.Worksheets("Donnees").Range("A6:N" & L).ClearContents
     
        Chemin = ThisWorkbook.Path    'si les 2 fichiers dans même dossier
     
        'demande à l'utilisateur la date du jour, date en cours par défaut
     
        LaDate = Format(Now, "dd\/MM\/yyyy")
        Do
        LaDate = InputBox("Entrez une date", "Date", LaDate)
        Loop Until IsDate(LaDate)
     
        If LaDate = "" Then Exit Sub
        Fichier(1) = "MC_Shootage.xlsm"
        'Fichier(2) = "MC_Finition.xlsm"
        'Fichier(3) = "MC_Expédition.xlsm"
        'Fichier(4) = "MC_TS.xlsm"
        'Fichier(5) = "MC_Luxe.xlsm"
        'Fichier(6) = "MC_Contrôle_Composants_CARTIER.xlsm"
        'Fichier(7) = "MC_Plastique.xlsm"
        'Fichier(8) = "MC_Metal.xlsm"
        'Fichier(9) = "MC_Witech.xlsm"
     
    For i = 1 To 1
        If FichierExiste(Chemin & "\" & Fichier(i)) Then
     
        'ouverture du fichier en lecture seule
     
            Workbooks.Open Filename:=Chemin & "\" & Fichier(i), UpdateLinks:=0, ReadOnly:=True
            Set WbSource = ActiveWorkbook
            On Error Resume Next
            x = Application.WorksheetFunction.CountIf(WbSource.Worksheets("Synthese").Range("A6:A10000"), "=" & LaDate)
                If x > 0 Then
            With WbSource.Worksheets("Synthese")
                    'Transfert des données
                    'exemple pour ajout de ligne(s)
                    For Each cel In .Range("A6:A10000")
                        If cel = LaDate Then
                            With WbDestination.Worksheets("Donnees")
                            L = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                             End With
     
                             Application.ScreenUpdating = False
                            .Range("A" & cel.Row & ":N" & cel.Row).Copy
                            WbDestination.Worksheets("Donnees").Range("A" & L).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
                        End If
                    Next cel
            End With
        End If
            Application.ScreenUpdating = True
            WbSource.Close SaveChanges:=False
        End If
        Next i
    End Sub
    Function FichierExiste(NomFichier As String) As Boolean
        FichierExiste = Dir(NomFichier) <> "" And NomFichier <> ""
    End Function
    Quelqu'un aurait une idée?

    Merci pour votre aide

    Rob's
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Comme LaDate est déclarée As String et que cel est probablement une vraie date, ça ne peut pas passer ici
    Tu pourrais essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cel.Text = LaDate Then
    Autrement, tu pourrais faire un filtre sur la date et tout copier d'un coup en utilisant
    SpecialCells(xlCellTypeVisible)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Bonjour,

    Merci pour ton aide.

    Bonne journée

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre solution est d'utiliser la filtre avancé d'excel, très simple à mettre en place pour faire de l'exportation suivant critères.
    Tutoriel à lire sur le sujet Les filtres avancés ou élaborés dans Excel
    En VBA on utilise la méthode AdvancedFilter de l'objetRange que l'on va appeler pour l'exemple rngSource.
    Tu places la zone des critères que l'on nommera pour l'exemple rngCriteria dans le même classeur que ta feuille [Synthese] mais cette zone peut se trouver aussi sur une autre classeur.
    Tu boucles sur l'ensemble de tes feuilles de données
    Par exemple : Attention ce n'est pas du code à copier comme tel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For sh = 1 to NbreDeFeuilleALire
      rngSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCriteria, CopyToRange:=LaPlageDeLaFeuille[Synthese]
      ' Code de suppression de la ligne des étiquettes de colonnes
    Next
    Tu dois calculer chaque fois où se trouve la dernière ligne de LaPlageDeLaFeuille[Synthese] afin d'exporter à partir de la dernière ligne + 1. Le filtre avancé copiera la ligne avec des étiquettes de colonnes qu'il faudra supprimer à chaque incrémentation de la boucle.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Salut Phillipe et le forum

    Merci pour votre feedback.
    J'ai du mal à comprendre le code pour pouvoir l'adapter à mon cas.
    Pouvez-vous passer par la méthode des filtres avancés pour trouver une solution à mon besoin?
    Merci

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

Discussions similaires

  1. Erreur Copier-Coller / Utiliser un tableau?
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/01/2013, 11h30
  2. [XL-2007] Erreur copier coller entre 2 classeurs
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/06/2012, 12h49
  3. Erreur : Copier / Coller successifs
    Par oliv951 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2011, 16h23
  4. [OWB] Erreur copier/coller d'objet
    Par Ujitsu dans le forum Outils
    Réponses: 0
    Dernier message: 28/11/2008, 11h42
  5. Copier Coller VBA Access
    Par seiya18 dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/02/2008, 20h33

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