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 :

PasteSpecial Excel 2000


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut PasteSpecial Excel 2000
    Bonjour à tous,

    Mon problème est le suivant,
    Je copie des plage de données de différents classeurs tous dans le même répertoire, puis j'en fait une copie en valeur dans un autre classeur. Cela marche sans problème chez moi et à mon boulot (sur Excel 2003 et 2002).

    Seulement, chez un client qui lui a Excel 2000, une erreur 1004 survient au PasteSpecial (En piece jointe, une copie d'écran de l'erreur 1004 du client). Ne pouvant pas me déplacer chez le client, je fais appel à vous.

    Je vous remercie d'avance de votre aide.

    Ci-dessous, le code :

    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
     
    Sub Boucle_Sur_Feuille()
     
    'Déclarations
        Dim wkbOrig As Workbook
        Dim wkbDest As Workbook
        Dim wksDest As Worksheet
        Dim rgOrig As Range
        Dim rgDest As Range
     
        Dim fichcherche As Variant
        Dim cptFic As Long
        Dim Ligdeb As Long
        Dim Ligfin As Long
     
    'Instanciation de la destination
        Set wkbDest = ActiveWorkbook
        wkbDest.Sheets.Add   'Ajout de la feuille de destination
        Set wksDest = ActiveSheet
        wksDest.Name = "Donnees"
        Set fichcherche = Application.FileSearch
     
    'Chemin d'accès des fichiers à copier
        strPath = InputBox("Entrez l'adresse du répertoire" + Chr(10) + "des fichiers à utiliser: ", "Chemin")
     
    'Recherche sur les fichiers xls du répertoire
        fichcherche.LookIn = strPath
        fichcherche.Filename = "*.xls"
     
        If fichcherche.Execute > 0 Then
            MsgBox fichcherche.FoundFiles.Count & " Fichier(s) a (ont) été trouvé(s)."
        End If
     
        Application.ScreenUpdating = False
     
    'Boucle sur les fichiers et copie des plages
        For cptFic = 1 To fichcherche.FoundFiles.Count
            Workbooks.OpenText Filename:=fichcherche.FoundFiles(cptFic)
            Set wkbOrig = ActiveWorkbook
            Set rgOrig = wkbOrig.ActiveSheet.Range("C1028:AC1249")
     
            Ligdeb = ((cptFic - 1) * 222) + 1
            Ligfin = Ligdeb + 222 - 1
     
            Set rgDest = wksDest.Range(wksDest.Cells(Ligdeb, 1), wksDest.Cells(Ligfin, 26))
     
            rgOrig.Copy
            rgDest.PasteSpecial xlValues 'Erreur 1004 à ce niveau dès le début
        Next cptFic
     
    'Ferméture des fichiers d'origine
        For cptFic = 1 To fichcherche.FoundFiles.Count
            Workbooks.OpenText Filename:=fichcherche.FoundFiles(cptFic)
            Set wkbOrig = ActiveWorkbook
            wkbOrig.Close
        Next cptFic
     
        Application.ScreenUpdating = True
     
        wkbDest.Activate
        Set rgDest = wksDest.Range(wksDest.Cells(1, 1), wksDest.Cells(Ligfin, 28))
        rgDest.Select
        Selection.Sort Key1:=Range("B1"), Order1:=xlAscending
     
    End Sub
    Images attachées Images attachées  

  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
    Remplace
    Set rgDest = wksDest.Range(wksDest.Cells(Ligdeb, 1), wksDest.Cells(Ligfin, 26))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Set rgDest = wksDest.Range("A" & wksDest.Cells(Ligdeb))
    'Si wksDest.Cells(Ligdeb) contient bien un N° de ligne. Sinon, tu as une erreur dans ta ligne mais pour la trouver, il nous faudrait d'autres indications.
    Tu dis
    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut Indications ?
    Merci pour ta réponse.
    Mais je ne sais pas de quel autre indication tu as besoins et pour quelle erreur éventuelle.

    A+

  4. #4
    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
    Tu as testé ma réponse ?
    Que contiennent wksDest.Cells(Ligdeb) ? Ligdeb ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut LigDeb
    Ligdeb correspond à la ligne sur laquelle je copie. En effet, vu qu'il y a plusieurs copie à faire, il me faut modifier la ligne pour ne pas écraser les copie déjà faites.

    Cela dit, je peut tout aussi utiliser une cellule pour la copie et ne pas utiliser de range (et donc ligFin pour définir entièrement le range). C'est bien ce que je test en ce moment avec ta recommandation.

    Merci

  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
    Dans ce cas là, tu n'as pas besoin d'instancier ton range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wksDest.Range(l'adresse de la cellule).PasteSpecial xlValues

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

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut Merci
    Je te remercie, ça marche bien. je suis passé par des adresses plutôt que des ranges et c'est plus stable apriori.

    Merci encore.
    Bonne journée.

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

Discussions similaires

  1. [VB.NET][EXCEL 2000] Automation et type de données
    Par Misterburma dans le forum Windows Forms
    Réponses: 4
    Dernier message: 01/02/2006, 16h51
  2. VBProjects sous Excel 2000
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 13h08
  3. Réponses: 1
    Dernier message: 10/10/2005, 09h58
  4. protection dossier sous excel 2000
    Par grandnello dans le forum Excel
    Réponses: 1
    Dernier message: 03/08/2005, 22h47
  5. [crystal report] export vers excel 2000 data only
    Par bobwilson dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/02/2005, 19h30

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