Macro VBA Dimensionner un tableau excel
Skoob
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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.
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.
A voir également:
- Macro VBA Dimensionner un tableau excel
- Trier un tableau excel - Guide
- Tableau word - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Imprimer un tableau excel - Guide
- Liste déroulante excel - Guide
3 réponses
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
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
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
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
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;
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;
Re,
ci dessous macro à l'enregistreur (maquette à adapter) tu avais oublié le 1° paste
avant tu sélectionnes ton tableau "source"
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