Macro VBA Dimensionner un tableau excel

Skoob -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à vous tous !

Voici mon problème :
Dans un tableau Excel, Je souhaite réaliser une macro qui :
prenne les colonnes que je sélectionne (il peut y avoir des sélections multiples),
les extrait dans un nouveau fichier
et que ce fichier concerve les mêmes dimensions de colonnes (largeur hauteur) que dans le fichier d'origine.

J'ai un début de macro :

Selection.Copy
Workbooks.Add
ActiveSheet.Paste

Ceci me copie colle ma sélection dans un nouveau tableau.
Néanmoins, toutes me cases ont la même largeur.

De plus, une autre macro que je n'arrive pas à réaliser consisterai à inscrire dans une case du nouveau document, le titre du document original (comme le fait la macro BuiltinDocumentProperties).
Exemple : mon doc d'origine s'appele : "mondoc.xls", je voudrai que dans mon nouveau fichier, ceci apparaisse dans une case.

Pourriez-vous m'aider à résoudre ce problème svp ?

Je suis un véritable débutant en Excel, et n'ai aucune formation en programmation quelle qu'elle soit... Svp, soyez indulgents avec moi.... Merci par avance des réponses que vous pourrez me fournir.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    il faut que tu précises le nom de ton classeur "cible" et la feuille "cible"
    la maquette que tu avais présenté copiait dans le meme fichier

    la macro ci dessous copie la selection en ouvrant le classeur "cible" et inscrit le nom du classeur "source" en Z1
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 04/03/2009 par Michel_M
    '
    
    '
        Selection.Copy
        Workbooks.Open Filename:="D:\documents\cible.xls" 'a adapter
        Sheets("autre").Select 'a adapter
        Range("A1").Select
        ActiveSheet.Paste
        Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Range("Z1") = thisworbook.Name ' ligne écrite en VBA: range("Z1") à adapter
    End Sub
    
    1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Comme tu débutes (bienvenue à bord du Titanic!...) :-)

    avec l'enregistreur de macro:
    tu sélectionnes ton tableau source
    copier
    1/-coller dans le classeur-source
    2/- edition-collage spécial-largeur de colonnes

    pour le nom du classeur source, ce n'est pas bien compliqué mais essaies déjà les copies, renvoie nous le texte de la macro (Alt+F11 pour accèder si tu ne sais pas) et qqn ici t'expliquera
    0
    1. Skoob
       
      Alors, j'avais déjà tenté en utilisant l'enregistreur de macro, et j'obtiens les lignes suivantes :

      Sub Macro1()
      '
      ' Macro1 Macro
      ' Macro enregistrée le 03/03/2009 par e_schade
      '

      '
      Range("A4:L32").Select
      Selection.Copy
      Sheets("Feuil1").Select
      Range("A1").Select
      Selection.PasteSpecial Paste:=xlColumnWidths, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=False
      End Sub

      Les problèmes qu'il y a :
      - le Range("A4:L32").Select veut dire que j'ai choisi un tableau allant de A4 à L32 (si je ne me trompe pas). Or, cette plage a été prise au hasard, et dans mon projet je veux pouvoir etre libre de choisir les plages de données
      - en voulant reproduire la macro (bouton play), j'ai l'erreur '1004' : La méthode PasteSpecial de la classe Range a échoué.

      Du coup, je suis un peu perdu....

      Par contre, tu me dis que pour obtenir le nom du classeur source, ce n'est pas bien compliqué. Peux tu me donner la marche à suivre ?

      Merci;
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    ci dessous macro à l'enregistreur (maquette à adapter) tu avais oublié le 1° paste

    avant tu sélectionnes ton tableau "source"

    Sub Macro1()
          Selection.Copy
        Sheets("Feuil2").Select
        ActiveSheet.Paste
        Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    
        'on ajoute l'instruction VBA  pour écrire dans la cellule "Z1", par exemple,le nom du fichier source où tu as écris cette macro
     Range("Z1") = ThisWorkbook.Name
    End Sub
    
    0
    1. Skoob
       
      Merci Michel pour cette macro.

      Néanmoins, il reste un problème :
      Range("Z1")= ThisWorkBook.Name

      Ceci m'affiche le nom du fichier d'origine dans le fichier d'origine.

      Or, je souhaite avoir le nom du fichier d'origine affiché dans le nouveau fichier.

      Merci...
      0