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 :

erreur La méthode 'Range' de l'objet '_Global' a échoué


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut erreur La méthode 'Range' de l'objet '_Global' a échoué
    Bonjour a vous tous,
    voila j'ai un problème qui apparait une fois sur deux quand j'execute ce programme. la premiere fois il me donne bien les resultat et les affiche les données dans Excel, et la deuxieme fois il bloque sur la l'instruction . et ainsi de suite l'erreur est la suivante
    La méthode 'Range' de l'objet '_Global' a échoué
    est ce que quelqu'un aurait une idée pourquoi ca arrive ( une fois ca marche et la deuxieme ca ne marche pas et ainsi de suite)
    merci a vous

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    Option Compare Database
     
    Private Sub Commande0_Click()
    Dim xl As Excel.Application
    Dim wrkb As workBook
    Dim wrks As worksheet
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim cnn As New ADODB.Connection
    Dim rs1 As New ADODB.Recordset
    Dim fld As DAO.Field
    Dim intColo As Long
    Dim intRow As Long
     
    Dim qdf As DAO.QueryDef
    Dim str As String
    Dim qdf1 As DAO.QueryDef
    Set db = CurrentDb()
    Set qdf1 = db.QueryDefs("Requête1hakim_Analyse croisée")
    qdf1.Parameters("dateDebut") = #10/29/2006#
    qdf1.Parameters("dateFin") = #10/30/2006#
    Set rs = qdf1.OpenRecordset
      Dim con As Object
        Dim strSql As String
        Dim Source As New ADODB.Recordset
        Dim rsDestination As New ADODB.Recordset
     
        Set con = Application.CurrentProject.Connection
     
     
     
     
     
    str = "TRANSFORM Count([AppelsPannes Transféré].Heure) AS CompteDeHeure " & _
            "SELECT [AppelsPannes Transféré].DatePanne, Count([AppelsPannes Transféré].Heure) AS [Total de Heure] " & _
            "FROM [AppelsPannes Transféré] " & "GROUP BY [AppelsPannes Transféré].DatePanne PIVOT [AppelsPannes Transféré].Territoire"
     
        Source.Open str, con, adOpenStatic, adLockReadOnly
     
     
    ' demarer excel
    Set xl = New Excel.Application
    xl.Visible = True
     
    With xl
     
        Set wrkb = xl.Workbooks.Add
        wrkb.Sheets("Feuil1").Name = "test"
     
          With wrkb.Sheets("test")
        '- le titre
            Range("a1:g1").Merge
            Range("a1:g1").Value = "Total Appels Pannes transférés aux agents DMR Dépassé"
            Range("a1:g1").Font.Bold = True
            Range("a1:g1").HorizontalAlignment = xlCenter
            Range("a1:g1").Interior.ColorIndex = 15
            Range("a1:g1").Interior.Pattern = xlSolid
     
            'transfere le champ dans la feille
     
             intColo = 1
             For Each fld In rs.Fields
                .Cells(2, intColo) = fld.Name
                .Cells(2, intColo).Font.Bold = True
                .Cells(2, intColo).Interior.ColorIndex = 40
                .Cells(2, intColo).Interior.Pattern = xlSolid
                intColo = intColo + 1
              Next
              For I = 1 To intColo
                 .Columns(I).AutoFit
              Next
     
    '
     
     
        intRow = rs.RecordCount
        ActiveSheet.Range("a3").CopyFromRecordset rs
        ' fermer le classeur  en l'enregistrement
        '
        Set qdf = CurrentDb.QueryDefs("AppelsPannes Transféré_par territoire")
        str = qdf.Sql
          Range("a" & rs.RecordCount + 5 & ":g" & rs.RecordCount + 5).Merge
          Range("a" & rs.RecordCount + 5 & ":g" & rs.RecordCount + 5).Value = "Total Appels Pannes transférés aux agents"
          Range("a" & rs.RecordCount + 5 & ":g" & rs.RecordCount + 5).Font.Bold = True
          Range("a" & rs.RecordCount + 5 & ":g" & rs.RecordCount + 5).HorizontalAlignment = xlCenter
          Range("a" & rs.RecordCount + 5 & ":g" & rs.RecordCount + 5).Interior.ColorIndex = 15
          Range("a" & rs.RecordCount + 5 & ":g" & rs.RecordCount + 5).Interior.Pattern = xlSolid
     
     
          intColo = 1
          For Each fld In rs.Fields
              .Cells(rs.RecordCount + 6, intColo) = fld.Name
              .Cells(rs.RecordCount + 6, intColo).Font.Bold = True
              .Cells(rs.RecordCount + 6, intColo).Interior.ColorIndex = 40
              .Cells(rs.RecordCount + 6, intColo).Interior.Pattern = xlSolid
              intColo = intColo + 1
          Next
     
     
     
     
          Range("a" & rs.RecordCount + 7).CopyFromRecordset Source
       End With
    End With
     
     
     
     
     
     
     
     
     
    Set cl = Nothing
    rs.Close
    Source.Close
    Set wrkb = Nothing
    Set wrks = Nothing
    Set xl = Nothing
    Set rs = Nothing
    Set Source = Nothing
     
     
     
    End Sub
    '

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With test
         '- le titre
            Range("a1:g1").Merge
            Range("a1:g1").Value = "Total Appels Pannes transférés aux agents DMR Dépassé"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par mahboub
    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
    (...etc...)
    With xl
        Set wrkb = xl.Workbooks.Add
        wrkb.Sheets("Feuil1").Name = "test"
     
          With wrkb.Sheets("test")
        '- le titre
            Range("a1:g1").Merge
     
    (...etc...)
     
             For Each fld In rs.Fields
                .Cells(2, intColo) = fld.Name
     
    (...etc...)
    Tout d'abord je ne sais pas comment VBA gère les imbrications de boucle With... Pour ma part j'éviterai, surtout que tu as déjà déclarer la variable objet "xl", et que derrière tu appelles cet objet xl.
    Ensuite, ton objet Range doit renvoyer à un Worksheet, sinon c'est l'ActiveSheet par défaut.
    Ainsi rajoute un "." devant tes Range-s, afin de bien travailler sur la feuille citée dans le With :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With wrkb.Sheets("test")
            .Range("a1:g1").Merge
    Et dis nous si ça bug encore...

  4. #4
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut
    BONJOUR ,
    je vous remercie tout les deux
    Citation Envoyé par dadavyvy
    Pour ma part j'éviterai, surtout que tu as déjà déclarer la variable objet "xl", et que derrière tu appelles cet objet xl
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With wrkb.Sheets("test")
            .Range("a1:g1").Merge
    Et dis nous si ça bug encore...
    ca marche merci a toi mais je n'ai pas compris c'est quoi le probleme de nomé mon objet xl

    pour le with test ca ne fonctionne pas
    merci encore

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Non, aucun problème de nommer ton objet "xl", c'est d'imbriquer des boucles With que j'éviterais.
    Au contraire, avoir nommer ton objet "xl" est très bien, ça permet de raccourcir ton code.
    De toute façon dans ton code, tu n'as pas besoin du "With xl", puisque tu re-cites par la suite : "xl."

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

Discussions similaires

  1. [XL-2007] La méthode 'Range' de l'objet '_Global' a échoué
    Par amelyfred dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/06/2011, 11h33
  2. [XL-2007] erreur: "la méthode .Range de l'objet worksheet a échoué"
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 28/10/2010, 09h08
  3. Réponses: 6
    Dernier message: 08/01/2009, 11h06
  4. Erreur 1004: La méthode "Range" de l'objet "_global" a échoué
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/09/2008, 23h05
  5. [VBA-E]La méthode 'Range' de l'objet '_Global' a échoué
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/02/2006, 16h00

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