IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[vba-excel]Une ligne de code Ok en debuggage mais Ko en exécution normale


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut [vba-excel]Une ligne de code Ok en debuggage mais Ko en exécution normale
    Bonjour,

    La ligne suivante (insérer dans une boucle de mon code) plante en exécution normal mais passe en mode deboggage !!
    Deux précisions :
    * cela plante uniquement à la dernière itération du boucle (en décrementation).
    * cela arrive uniquement pour les classeurs des formules ou liaisons

    Quelqu'un a-t-il déjà rencontré ce type de soucis ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea).Copy
    Merci de votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    et tu plante quoi des choux ...?


    que fait-t'il ton code...?

    à tu "conscience" que lorsque tu utilise "ActiveSheet" il sagit de la feuille de calcul active... donc pour pouvoir l'utiliser il te faut une feuille active.. et PrintArea est la zone d'impression défini sur cette feuille ... s'il n'y as pas de zone définie printArea renvoi une chaine vide... et Range("") renvoi une erreur 1004 ( c'est cela les choux ..?)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Il fait simplement la copie (valeur et format) de(s) feuille(s) avec son contenu d'un classeur vers un autre.

    Je ne comprends pas les points suivants :
    - cela fonctionne sur des feuilles simples mais pas sur des feuilles avec formules/liaisons
    - la boucle ne marche pas que pour la dernière feuille à copiée
    - le déroulement du code en debuggage fonctionne bien !! sans renvoie d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Sub copie_xls_vers_ppt(WB, PptPres, List_onglet As Variant)
    ' Activation de la gestion des erreurs
    On Error GoTo ErrorMessage
        Dim n As Integer, i As Integer, k As Integer, c As Interior
     
        ' =======================================
        ' pour les onglets sélectionnés du classeur
        n = UBound(List_onglet, 1)
     
        For k = n To 1 Step -1
            i = List_onglet(k)
            PptPres.Activate
            PptPres.Sheets.Add before:=Worksheets(Worksheets.Count)
            WB.Activate
            WB.Worksheets(i).Activate
            ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea).Copy
            PptPres.Activate
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
           SkipBlanks:=False, Transpose:=False
           Application.CutCopyMode = False
     
            WB.Worksheets(i).Copy before:=PptPres.Worksheets(1)
        Next k
        WB.Close False
        Exit Sub
    '********************* Gestion des erreurs *************************
    ErrorMessage:
    'Erreur lors de l'éxécution
       msg = MsgBox("L'erreur # " & Str(Err.Number) & " a été générée par " _
             & Err.Source & Chr(13) & Err.Description, vbCritical + vbOKOnly, "Erreur Identification")
    End Sub
    Il me semble après quelques éliminations que c'est cette ligne qui pose soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea).Copy
    Il me semble, à mon niveau de connaissance, que tout les points dont tu parles sont vérifiés :
    - classeur active donc activesheet ok
    - zone d'impression non vide car contient des valeurs


    Merci

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    et le message d'erreur..c'est quoi ....?

    puis pour la zone d'impression je n'ai pas écrit vide mais définit...(fichier mise en page zone d'impression..)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Il s'agit de l'erreur suivante "1004":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'erreur #1004 a été généré par VBAProject. Erreur définie par l'application ou par l'objet
    Merci

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    à la limite tu peu écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If ActiveSheet.PageSetup.PrintArea <> "" Then
        ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea).Copy
    Else
        ActiveSheet.UsedRange.Copy
    End If

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Cela me permet de mieux cerner l'anomalie et ça ne renvoie pas d'erreur.

    Merci de votre aide !

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Bonjour à tous,

    L'erreur provenait du fait que des feuilles étaient cachées !!

    L'info peut toujours servir


    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. analyse d'une ligne de code vba
    Par Nourson dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/09/2011, 12h05
  2. une action dans excel peut elle créer une ligne de code dans VBA?
    Par beebe dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 25/09/2008, 07h23
  3. Bug dans une ligne de code VBA
    Par orlacit dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/11/2007, 15h25
  4. [VBA] supprimer une ligne excel
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2006, 14h11
  5. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo