> 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
Publicité
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
64,99 €Microphone USB Razer Seiren X à 64,99 €
Valable jusqu'au 18 Octobre

Amazon fait une promotion sur le microphone USB Razer Seiren X qui passe à 64,99 € au lieu de 99 € ailleurs. Au moyen d'un mode de captation supercardioïde, le son est enregistré avec un angle plus petit. Le bruit de fond indésirable est alors supprimé, ce qui permet à votre audience de vous entendre clairement et de ne jamais rater un seul de vos messages. 


> Voir l'offre
78,99 €Kit de 16 Go (2 x 8 Go) de mémoire DDR4 Crucial Ballistix 3600 MHz à 78,99 €
Valable jusqu'au 18 Octobre

Amazon fait une promotion sur le kit de 16 Go (2x8 Go) de mémoire DDR4 Crucial Ballistix 3600 MT/s CL16 qui passe à 78,99 € alors qu'on le trouve ailleurs à partir de 95 €.


> Voir l'offre
20,57 €Carte mémoire SDXC UHS-I U3 SanDisk Extreme Plus 128 Go (jusqu'à 160 Mo/s) à 20,57 €
Valable jusqu'au 19 Octobre

Amazon fait une belle promotion sur la carte mémoire SDXC UHS-I U3 SanDisk Extreme Plus d'une capacité de 128 Go qui passe à 20,57 € alors qu'on trouve la carte ailleurs à partir de 30 €. Cette carte mémoire offre des vitesses jusqu'à 160 Mo/s en lecture et 90 Mo/s en écriture et intègre des mécanismes afin de gérer l'usure des cellules de la carte et augmenter ainsi sa durée de vie. Une valeur sûre pour les plus exigeants.

Elle résiste aux températures extrêmes, à l'eau, aux chocs et aux rayons X.


> 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