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 :

Compréhension d'un code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Par défaut Compréhension d'un code
    Bonjour,

    J'ai un soucis avec le code que j'ai récupérer à quelqu'un
    Le soucis est qu'il me fait la copie mais pas de tout. En fait, il ne copie que le texte mais pas les images.

    Voici 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
    Sub PublishOnPortal1()
        Dim ThisWB As Workbook
        Dim NewWB As Workbook
        Set ThisWB = Workbooks(WorkbookNumber(ThisWorkbook.Name))
        Workbooks.Add
        Set NewWB = ActiveWorkbook
     
        ThisWB.Sheets("toto").Cells.Copy
        NewWB.Activate
        Sheets.Add
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        NewWB.Sheets(1).Rows("4:21").Delete
        NewWB.Sheets(1).Rows("1:2").Font.ColorIndex = 2
        ActiveSheet.Name = "Blueprint"
        ActiveSheet.Range("A1").Select
        NewWB.SaveAs FileName:=ThisWB.Sheets("Configuration").Range("D21")
        NewWB.Close Savechanges:=True
    End Sub
     
     
    Function WorkbookNumber(FileName As String)
        Dim i As Integer
        For i = 1 To Workbooks.Count
            If InStr(1, Workbooks(i).Name, FileName, vbTextCompare) <> 0 Then
                WorkbookNumber = i
                Exit Function
            End If
        Next i
    End Function
    Si vous avez une idée pourquoi il ne copie pas les images, je serais heureux que vous partagiez cet idée avec moi )))

    Merci d'avance!

    Amicalement
    Poum

  2. #2
    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 Poum,
    Ton code ne peux pas coller le ou les graphiques parce-que dans cette procédure il y a un Copier/Collage Spécial-Valeur & Format.
    Fait un test à la main.
    Tu fais un Copier/Coller d'une feuille contenant un dessin ou un graphique
    Copie d'une feuille1 vers une feuille2 (cellule A1) Valeur + Objets sont bien coller
    Tu effaces et tu recommences mais en faisant un Copier/CollageSpecial-Valeur
    Tu constateras par toi-même que cela ne fonctionne pas.

    Donc
    Exemple avec Copier/Coller (Graphique ou dessins compris)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub testCopyPaste()
     Dim rngPaste As Range: Set rngPaste = shtCopy.Range("A1")
     shtDb.Cells.Copy rngPaste
    End Sub
    Exemple avec Copier/CollageSpecial-Valeur et Format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub testCopyPasteSpecial()
     Dim rngPaste As Range: Set rngPaste = shtCopy.Range("A1")
     shtDb.Cells.Copy
     With rngPaste
     .PasteSpecial Paste:=xlPasteValues
     .PasteSpecial Paste:=xlPasteFormats
     End With
    End Sub
    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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Par défaut
    Merci de ton aide!! ça m'aide beaucoup ! =)

    J'ai aussi une question, quel est la différence entre un copier/coller spécial et un normal ?

    Spécial = on peut faire la sélection des données qu'on souhaite copier ?
    Normal = on copie tout ?

    Sinon j'ai toujours du mal a comprendre ces lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        NewWB.Sheets(1).Rows("4:21").Delete
        NewWB.Sheets(1).Rows("1:2").Font.ColorIndex = 2
    Mon niveau n'est pas très haut en VBA donc désoler si je pose des questions qui ont l'air évident pour vous ...

    Merci d'avance

  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,

    Un Copier/Coller comme je l'ai expliqué colle tout ce que l'on a copié et c'est un standard de Windows que l'on retrouve dans tous les programmes.

    Le Collage Special d'Excel comme beaucoup d'autres fonctionnalités présentes nativement dans Excel n'est pas très connus ou en tout les cas ceux qui le connaisse n'en connaissent qu'une infime partie.

    La fenêtre de dialogue Collage spécial est divisée en plusieurs parties dont deux parties sont regroupées sous les noms Coller et Opérations

    Coller (C'est la partie la plus connue)
    Permet de faire un collage partiel de ce que l'on a copier. (Valeur, format, commentaire etc...)
    C'est ce qui est fait dans la partie du code ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With rngPaste
    .PasteSpecial Paste:=xlPasteValues    ' Collage Special - Valeur
    .PasteSpecial Paste:=xlPasteFormats  ' Collage Special - Format
    End With
    Opérations (La moins connue, je dirais même que je n'ai pas encore rencontré quelqu'un qui venait à une formation et qui connaissait).
    Permet après avoir copié par exemple le contenu d'une cellule contenant une valeur numérique de le Coller sur une plage de nombre en utilisant une des 4 opérations arithmétiques classiques (Multiplier, Diviser, Soustraire, Additionner).
    Extrêmement pratique pour faire une augmentation de prix rapide et en deux clics.
    Il reste
    Transpose
    Qui permet de coller en ligne tout ce qui se trouve en colonne et inversement. On peut ainsi inverser un tableau.
    Collage avec liaison
    Qui permet de lier une plage de cellules à une autre
    Blancs non compris
    Si dans la zone de copie, il y a une ou plusieurs cellules vides, Excel lors du collage laissera les données des cellules de la zone de collage qui se trouveraient à un emplacement correspond à une cellule vide.
    Exemple : Si dans la zone de copie A2:A10 la cellule A4 est vide et que dans la zone de collage F2:F10, la cellule F4 contiendrait une donnée, cette cellule conserverait sa donnée.

    Est-ce plus clair maintenant ?
    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

Discussions similaires

  1. [XL-2007] Compréhension d'un code de filtre de colonne
    Par Fouinette85 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2009, 18h00
  2. compréhension d'un code
    Par alsimbad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/05/2008, 06h52
  3. [ARM7] Aide pour la compréhension d'un code
    Par hack-77 dans le forum Autres architectures
    Réponses: 6
    Dernier message: 25/03/2008, 20h34
  4. Compréhension d'un code
    Par maxlegrand dans le forum Langage
    Réponses: 1
    Dernier message: 12/11/2007, 09h47
  5. Réponses: 10
    Dernier message: 11/04/2007, 11h14

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