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 :

[VBA][EXCEL] Copie de graphes entre 2 classeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut [VBA][EXCEL] Copie de graphes entre 2 classeurs
    Bonjour!!

    J'ai un problème de copie de graphes entre classeurs qui me casse bien les @$^&!!?*:

    Voici un bout de ma macro excel qui doit faire tout ça:

    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
     
    Sub copySheet()
    'Macro qui fait une copie du document sans les données
    'Author: Kurt-Kobain
    'Date: 11/01/2005
    'Update: 07/03/2007
     
    Dim sourceBook As Excel.Workbook
    Dim newFile As Excel.Workbook
    Dim newSheet As Worksheet
    Dim indiceGraph As Integer
     
    'Liste des noms des onglets à copier
    Dim onglets(5) As String
    onglets(5) = "Plouplou"
    onglets(4) = "Cuicui"
    onglets(3) = "Ouafouaf"
    onglets(2) = "Meoooww"
    onglets(1) = "Croacroa"
     
     
    Set sourceBook = Application.ActiveWorkbook
    Set newFile = Workbooks.Add(xlWBATWorksheet)
     
    For i = 1 To 5
        Set newSheet = newFile.Worksheets("Feuil" & i)
        newSheet.Name = onglets(i)
     
        sourceBook.Sheets(onglets(i)).UsedRange.Copy newSheet.Range("A1")
     
        For j = 1 To sourceBook.Sheets(onglets(i)).UsedRange.Columns.Count
            newSheet.Cells(j).ColumnWidth = sourceBook.Sheets(onglets(i)).Cells(j).ColumnWidth
        Next
     
        For j = 1 To sourceBook.Sheets(onglets(i)).UsedRange.Rows.Count
            newSheet.Rows(j).RowHeight = sourceBook.Sheets(onglets(i)).Rows(j).RowHeight
        Next
     
        'indiceGraph = 0
        'For Each Graph In sourceBook.Sheets(onglets(i)).ChartObjects
        '    indiceGraph = indiceGraph + 1
        '    Graph.CopyPicture
        '    newSheet.PasteSpecial Link:=False, DisplayAsIcon:=False
        '    newSheet.DrawingObjects(indiceGraph).Left = Graph.Left
        '    newSheet.DrawingObjects(indiceGraph).Top = Graph.Top
        'Next Graph
     
        newFile.Worksheets.Add Count:=1, Type:=xlWorksheet
    Next
     
    newFile.SaveAs (sourceBook.Path & "\"Lights.xls")
     
    End Sub
    Dans ce cas, 1 graphe sur 3 est copié. C'est déjà pas drôle.

    Quand je décommente la boucle for (j'ai quand meme tenté un google et une recherche ds Developpez.com), les graphes qui étaient absents dans la première version sont au bon endroit tandis que les autres (ceux qui étaient présents dans la première version) apparaissent tous en haut à gauche...


    Merci pour ce démystifiage.

    PS: Je ne suis pas expert VBA.

  2. #2
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Je suis sûr que cela vient de cet enflure de usedRange...

  3. #3
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Je savais bien que c'était la faute de cet imbécile!!!!!

    J'ai remplacé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sourceBook.Sheets(onglets(i)).UsedRange.Copy newSheet.Range("A1")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sourceBook.Sheets(onglets(i)).Range("A1", "Z" & sourceBook.Sheets(onglets(i)).UsedRange.Rows.Count).Copy newSheet.Range("A1")
    et ça marche mieux.


    Il reste plus qu'à remplacer "Z" par la longueur réelle du classeur.

  4. #4
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Bon, il faut aussi déprotecter les feuilles Excel à traiter sinon les graphes ne sont pas copiés...

  5. #5
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Mince, y'a encore un bug...

    A l'ouverture du document Excel, l'autre me dit "Ce classeur comporte des liaisons et gniaiianinajlkjleuoirbbebek"

    Comment jarter les liaisons lors d'une copie d'éléments entre classeurs???

    Quel salopiot ce pti *$^ù" d'excel...

Discussions similaires

  1. [ VB6 ]Copie de donnée entre deux classeurs Excel
    Par leriderfoudu77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 21/12/2012, 09h52
  2. [VBA Excel] - Copie données entre feuilles
    Par mimic50 dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/11/2006, 13h43
  3. [VBA Excel] - Copie Aléatoire de données entre 2 feuilles
    Par ethan64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2006, 17h34
  4. [VBA][Excel] Copie écran
    Par KOFJCH dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/12/2005, 15h01
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09

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