Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 16h14   #1
Membre du Club
 
Avatar de midge
 
Homme Marc
Inscription : juillet 2010
Messages : 45
Détails du profil
Informations personnelles :
Nom : Homme Marc
Localisation : France

Informations forums :
Inscription : juillet 2010
Messages : 45
Points : 54
Points : 54
Par défaut erreur d'execution 9 insoluble

bonjour le forum
Je tourne en rond avec cette errreur ; le debug s'affiche sur la ligne rouge et je trouve pas, le plus curieux c'est que la macro a fonctionné une fois ... aurais-je rajouté quelque chose qu'il ne fallait pas ?
(mon niveau en VBA est basique, l'enregistreur et le forum m'ont permis de produire ce qui suit).
Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub Miseenforme()


' Touche de raccourci du clavier: Ctrl+e

Dim LastLig As Long
Dim i As Long
Dim appExcel As Excel.Application
Dim wbExcel As Excel.Workbook

Application.ScreenUpdating = False
'Workbooks("export.xls").Close SaveChanges:=False
'Application.Quit
'Set wbExcel = Nothing
'Set appExcel = Nothing

With Sheets("suivi").PageSetup                          'forme paysage et répétition en-tête
         .PrintTitleRows = "$1:$1"
         .Orientation = xlLandscape
   
         ActiveWindow.View = xlPageBreakPreview      'apercu des sauts de pages
         ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1         'déplacement vertical à droiteColumns("I:I").ColumnWidth = 9.43
        
End With
 
        With Cells.Select                                                                                               'sélection de toutes les cellules et tri colonne A ordre croissant
                Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
        End With
                                With Sheets("suivi")                      'boucle avec insertion de saut de page horizontal
                                        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
                                        For i = LastLig To 2 Step -1
                                        If Left(Range("A" & i).Value, 2) <> Left(Range("A" & i + 1).Value, 2) Then
                                        ActiveSheet.HPageBreaks.Add Before:=Range("A" & (i + 1))
                                        End If
                                        Next i
                                End With
                                              

ActiveSheet.PrintOut                                            'imprimer les pages de la feuille sur imprimante active
Application.ScreenUpdating = True

'Workbooks("SUIVIM.xls").Close SaveChanges:=False
'Application.Quit
'Set wbExcel = Nothing
'Set appExcel = Nothing
           
End Sub
Merci pour vos retours
__________________
___________________________________________
Cdlmt

Etre dans le vent ... une ambition de feuille morte.
G.THIBON
midge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h56   #2
Membre confirmé
 
Inscription : juillet 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 209
Points : 219
Points : 219
Bonjour,
sans regarder le code de trop prêt et à partir du fait que tu précises que le code à marché 1 fois , j'en conclu que la page comportait un saut de page et que la première exécution a permis de l'enlever de la zone d'impression.
Si on ré-itére l'opération et qu'il n'y a plus de saut de page -> activesheet.VPageBreaks(1). plante. Pour éviter ce type de plantage , on peut mettre un IF activesheet.VPageBreaks.count > 0 then ....
CodeFacile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2011, 16h13   #3
Membre du Club
 
Avatar de midge
 
Homme Marc
Inscription : juillet 2010
Messages : 45
Détails du profil
Informations personnelles :
Nom : Homme Marc
Localisation : France

Informations forums :
Inscription : juillet 2010
Messages : 45
Points : 54
Points : 54
Merci CodeFacile pour ta réponse
Je ne suis pas sûr d'avoir bien compris en revanche ; je préciserai donc que le fichier "export" contient les données à modifier en mode portrait et donc les données sont sur plusieurs pages et je copie/colle sans modifs sur la feuille "suivi" du fichier(l'aperçu des sauts de page identifie plusieurs pages) . C'est à ce moment seulement que je voudrai faire la mise en forme : mode paysage et étirer le saut de page à droite pour que cela tienne sur une page A4. La boucle qui suit permet de créer une feuille par plage d'items (toutes les valeurs commençant par 10 sur une page, tous les 20 sur une autre etc.)
Ces précisions dites, je ne sais pas ce que je dois faire avec
Code :
activesheet.VPageBreaks.count > 0 then
? merci pour tes éclaircissements
__________________
___________________________________________
Cdlmt

Etre dans le vent ... une ambition de feuille morte.
G.THIBON
midge est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h45.


 
 
 
 
Partenaires

Hébergement Web