> Tous les forums > Forum Bureautique
 Macro Excel 2007Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
beckendid
  Posté le 13/02/2017 @ 10:29 
Aller en bas de la page 
Petit astucien

Bonjour

Sur une première feuille de calcul, j'ai 9 tableaux, tous avec un nom de plage

sur une deuxième feuille de calcul, j'ai 12 tableaux (identiques en nombre de colonnes à la première série, mais avec des lignes supplémentaires) , tous également avec un nom de plage.

Pour chaque série de tableau, et ceci pour éviter de les sélectionner un par un, j'ai créé une petite macro d'impression avec prévisualisation.

Ma première macro fonctionne parfaitement.

Malheureusement, il n'en n'est pas de même pour la seconde qui me génère une erreur 1004 sur la ligne range ("IMP..... Je pense qu'elle est due au fait que la ligne est trop longue (à confirmer).

J'ai bien tenté de la couper en deux ligne, ainsi que la ligne ActivateSheet d'ailleurs.

Là, je n'ai plus d'erreur, mais l'impression ne se fait que sur les tableaux figurant sur la deuxième ligne.

Sur chaque ligne que je veux couper, je dois certainement oublier un ou deux signes en fin des premières lignes.

Malgré multiples recherches et essais, rien ne fonctionne correctement.

Je fais donc appel à vos connaissances.

Précisions :

- ill s'agit de mes toutes premières macros personnelles, donc ne vous étonnez pas de mon blocage sur quelque chose qui va vous paraitre très simple.

- j'ai créé la première macro à l'aide de l'enregistreur, puis j'ai remplacé les coordonnées des tableaux par leur nom de plage

- ensuite, j'ai fait un copier/coller pour ma deuxième macro, en modifiant tout ce qui devait être modifié pour se conformer à la deuxième série de tableau

D'ailleurs, à ce sujet, si vous pouvez me conseiller sur un ouvrage (ou un site) traitant des macros excel pour débutant, je suis preneur.

Merci d'avance

Cdlt

Voici les 2 macros en question :

1ère macro :

Sub IMP_COMP_TANT_PCH()
'
' IMP_COMP_TANT_PCH Macro
'

'
Range("B3:M58").Select
Range("IMP_COMP_TANT_PCH_F2_1,IMP_COMP_TANT_PCH_F2_2,IMP_COMP_TANT_PCH_F3_1,IMP_COMP_TANT_PCH_F3_2,IMP_COMP_TANT_PCH_F3_3,IMP_COMP_TANT_PCH_F4_1,IMP_COMP_TANT_PCH_F4_2,IMP_COMP_TANT_PCH_F4_3,IMP_COMP_TANT_PCH_F5_1").Select
Range("O3").Activate
ActiveSheet.PageSetup.PrintArea = "IMP_COMP_TANT_PCH_F2_1,IMP_COMP_TANT_PCH_F2_2,IMP_COMP_TANT_PCH_F3_1,IMP_COMP_TANT_PCH_F3_2,IMP_COMP_TANT_PCH_F3_3,IMP_COMP_TANT_PCH_F4_1,IMP_COMP_TANT_PCH_F4_2,IMP_COMP_TANT_PCH_F4_3,IMP_COMP_TANT_PCH_F5_1"
ActiveWindow.SelectedSheets.PrintPreview

End Sub

2ème macro :


Sub IMP_COMP_TANT_PCL()

' IMP_COMP_TANT_PCL Macro
'

'
Range("B3:M78").Select
Range("IMP_COMP_TANT_PCL_F2_1,IMP_COMP_TANT_PCL_F2_2,IMP_COMP_TANT_PCL_F3_1,IMP_COMP_TANT_PCL_F3_2,IMP_COMP_TANT_PCL_F3_3,IMP_COMP_TANT_PCL_F3_4,IMP_COMP_TANT_PCL_F3_5,IMP_COMP_TANT_PCL_F4_1,IMP_COMP_TANT_PCL_F4_2,IMP_COMP_TANT_PCL_F4_3,IMP_COMP_TANT_PCL_F4_4,IMP_COMP_TANT_PCL_F5_1").Select
Range("O3").Activate
ActiveSheet.PageSetup.PrintArea = "IMP_COMP_TANT_PCL_F2_1,IMP_COMP_TANT_PCL_F2_2,IMP_COMP_TANT_PCL_F3_1,IMP_COMP_TANT_PCL_F3_2,IMP_COMP_TANT_PCL_F3_3,IMP_COMP_TANT_PCL_F3_4,IMP_COMP_TANT_PCL_F3_5,IMP_COMP_TANT_PCL_F4_1,IMP_COMP_TANT_PCL_F4_2,IMP_COMP_TANT_PCL_F4_3,IMP_COMP_TANT_PCL_F4_4,IMP_COMP_TANT_PCL_F5_1"
ActiveWindow.SelectedSheets.PrintPreview

End Sub

Publicité
ferrand
 Posté le 13/02/2017 à 11:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Pour un code correct, il te reste déjà au moins à supprimer les Select et Activate de ton code...

Ensuite, la propriété PrintArea est définie par une donnée de type String, représentant l'adresse de la plage à imprimer, et elle ne peut être définie par une plage multizone...

Je doute donc a-priori que ta macro fonctionne.

Cordialement.

beckendid
 Posté le 13/02/2017 à 17:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour

En ce qui concerne la première macro, je confirme qu'elle fonctionne parfaitement.

Mes 9 tableaux sont bien sélectionnés et la prévisualisation avant impression apparait bien.

Comme précisé, étant complètement débutant, j'ai utilisé la fonction "Enregistreur" pour créer cette macro et je n'ai changé que les références des tableaux (B3:M58...) par les noms des plages couvrant chaque tableau.

Cdlt

LORENZO83
 Posté le 13/02/2017 à 19:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir

Quel intérêt de donner un début nom de plage identique à tous les tableaux. Supprimez la partie commune et conservez uniquement la partie qui les différencie. exemple:

IMP_COMP_TANT_PCL_F2_1 remplacé par F2_1

IMP_COMP_TANT_PCL_F2_2 remplacé par F2_2

etc....

Vous y gagnerez en clarté et vos doutes sur la longueur de la ligne de code seront écartés.

Cdlt

beckendid
 Posté le 13/02/2017 à 21:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir

J'ai fait l'essai sur ma 1ère macro, mais, désolé, votre conseil fait apparaitre une erreur 1004.

Cdlt

LORENZO83
 Posté le 14/02/2017 à 08:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour

Moi aussi j'ai fais l'essai sur la première macro et cela fonctionne plutôt bien.

Avez-vous la même chose?

Range("F2_1, F2_2, F3_1, F3_2, F3_3, F4_1, F4_2, F4_3, F5_1").Select
ActiveWindow.SelectedSheets.PrintPreview

Cdlt

beckendid
 Posté le 14/02/2017 à 10:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour
Oui, et cela m'indique une erreur 1004 sur la ligne range

Cdlt

LORENZO83
 Posté le 14/02/2017 à 11:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Avez-vous bien renommé correctement toutes les plages. Si oui, mettez ici la ligne en défaut

beckendid
 Posté le 14/02/2017 à 15:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour

Voici la macro après corrections :

Sub IMP_COMP_TANT_PCH()
'
' IMP_COMP_TANT_PCH Macro
'

Range("F2_1, F2_2, F3_1, F3_2, F3_3, F4_1, F4_2, F4_3, F5_1").Select-------------------------------------------------> (1)
ActiveSheet.PageSetup.PrintArea = "F2_1, F2_2, F3_1, F3_2, F3_3, F4_1, F4_2, F4_3, F5_1" ----------------------> (2)
ActiveWindow.SelectedSheets.PrintPreview

End Sub

(1) Lorsque je lance la macro dans Excel, une fenêtre m'indiquant une erreur 1004 s'ouvre et dans le débogueur cette ligne est coloriée en jaune.

(2) L'erreur apparait, que cette ligne soit présente ou pas.

Par contre, si je remet les noms de plage, la macro fonctionne parfaitement (sélection des tableaux et prévisualisation des 9 tableaux, 1 par feuille, avant impression)

Cdlt



Modifié par beckendid le 14/02/2017 15:56
LORENZO83
 Posté le 14/02/2017 à 16:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Chez moi, ça fonctionne bien. Est-il possible d'avoir votre fichier sans donnée confidentielle?

beckendid
 Posté le 14/02/2017 à 20:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir

Désolé, mais pas possible.

Les feuilles qui comprennent ces tableaux font partie d'une multitude d'autres feuilles dans un gros classeur Excel.

Et d'isoler ces deux feuilles et de les rendre "anonyme" et "neutre" représente un gros travail qui me prendrait trop de temps.

Je vais me débrouiller autrement, étant pris par le temps.

Merci beaucoup pour votre implication et votre tentative de résoudre mon problème.

Cdlt

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
149,99 €Nettoyeur haute pression Karcher K4 Power Control à 149,99 € (via ODR)
Valable jusqu'au 26 Mai

Cdiscount fait une promotion sur le nettoyeur haute pression Karcher K4 Power Control à 179,99 € alors qu'on le trouve ailleurs à partir de 199 €. Or Karcher rembourse actuellement 30 € pour l'achat de ce nettoyeur qui vous reviendra à 149,99 € après remboursement.

Le Nettoyeur haute pression K4 Full Power est livré avec un pistolet ergonomique, un flexible 8 m, un nez de robinet pour raccorder un tuyau d’arrosage, une lance Vario Power et une rotabuse. 

Avec sa poignée télescopique rétractable, l'appareil peut être déplacé et rangé facilement. Le K4 Power Control est idéal pour une utilisation intensive et pour nettoyer vélos, outils de jardin, meubles de jardin, etc. Pression max 130 bar, débit max 420 L/h, puissance 1800 Watts, surface conseillée ≈ 30m²/h, moteur universel, pompe Ncor.


> Voir l'offre
649,99 €Microsoft Surface Laptop 3 13,5 pouces tactile (Core i5, 8 Go, SSD 128 Go) à 649,99 €
Valable jusqu'au 26 Mai

Fnac fait une promotion sur le tout récent ordinateur portable Microsoft Surface Laptop 3 13 pouces tactile qui passe à 649,99 € alors qu'on le trouve ailleurs autour de 749 €. Cet ordinateur de très grande qualité dispose d'un écran tactile de 13 pouces 2736x1824 pixels, de 8 Go de RAM, d'un processeur Intel Core i5 1035G7, d'un SSD de 128 Go (qui est facilement remplaçable si besoin). Il ne pèse que 1,2 kg et offre une autonomie jusqu'à 9h. Le tout tourne sous Windows 10 Pro.


> Voir l'offre
199,00 €Ecran PC 24.5 pouces BenQ EX2510S (FHD, IPS, FreeSync,165Hz, 2xHP, réglable en hauteur) à 199 €
Valable jusqu'au 26 Mai

Amazon fait une belle promotion sur l'écran PC BenQ MOBIUZ EX2510S qui passe 199,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 249 €. Il possède une dalle de 24.5 pouces Full HD IPS et offre une fréquence de rafraichissement de 165 Hz et un temps de réponse de 1 ms. Il intègre 2 HP (2.5W) et une connectivité HDMI et DP. Il est réglable en hauteur.


> Voir l'offre

Sujets relatifs
EXCEL 2007 MAcro
Macro excel 2007
besoin d'une macro excel 2007
[Excel 2007] Macro : Sélection d'un tableau selon sa longueur variable
excel 2007 macro mise en page, quadrillage, filtre
Excel 2007 macro rajouter tri + cellule en surbrillance à chaque changement
macro sous excel 2007
(Macro) Copier onglet sur autre fichier Excel (2007)
Probleme excel - tri dans macro Excel 2007
macro majuscule dans excel 2007
Plus de sujets relatifs à Macro Excel 2007
 > Tous les forums > Forum Bureautique