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

VB.NET Discussion :

erreur exécution 1004


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut erreur exécution 1004
    Bonjour,

    Je débute en VB, en effet c'est mon premier projet. En fait mon programme doit transférer des données dans un fichier excel mais j'ai une erreur récurrente :
    La méthode Range de l'objet global a échoué.
    Il semblerait que ce soit la partie en rouge qui pose problème :

    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
    Private Sub Command1_Click()
     
    'Déclaration des variables
    Dim appExcel As excel.Application 'Application Excel
    Dim wbExcel As excel.Workbook 'Classeur Excel
    Dim wsExcel As excel.Worksheet 'Feuille Excel
    Dim K As Integer
     
    Set appExcel = CreateObject("Excel.Application")
    appExcel.Visible = True
    appExcel.Workbooks.Open ("F:\Documents\test.xlsx")
    Set wbExcel = appExcel.ActiveWorkbook
    Set wsExcel = wbExcel.ActiveSheet
     
    'Test si la 1ère ligne est vide
     
    Range("A1").Select
     
    If (IsEmpty(ActiveCell)) Then
     
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Nom"
     
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Prénom"
     
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "N° tél fixe"
     
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "N° tél mobile"
     
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Adresse"
     
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "Problèmes"
     
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "Date"
    End If
     
     
    'test pour déterminer quelle ligne est inoccupée
    K = 2
     
    While (Range("A" & K) <> "")
    K = K + 1
    Wend
     
    'transfert des données saisies dans le classeur excel
     
    Range("A" & K).Select
    ActiveCell.FormulaR1C1 = Nom.Text
     
    Range("B" & K).Select
    ActiveCell.FormulaR1C1 = Prenom.Text
     
    Range("C" & K).Select
    ActiveCell.FormulaR1C1 = TelFixe.Text
     
    Range("D" & K).Select
    ActiveCell.FormulaR1C1 = TelMobile.Text
     
    Range("E" & K).Select
    ActiveCell.FormulaR1C1 = Adresse.Text
     
    Range("F" & K).Select
    ActiveCell.FormulaR1C1 = "Le " & Date & " à " & Time
     
    ActiveWorkbook.Save
    wbExcel.Close 'Fermeture du classeur Excel
    appExcel.Quit
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing
     
    'on efface les données saisies
    Nom.Text = "Nom"
     
    Prenom.Text = "Prénom"
     
    TelFixe.Text = "N° tél fixe"
     
    TelMobile.Text = "N° tél mobile"
     
    Adresse.Text = "Adresse"
     
    Prob.Text = ""
     
    End Sub
    voilà
    A bientôt

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je n'ai pas VB au boulot mais teste ce qui suit :
    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
     
    Private Sub Command1_Click()
     
        'Déclaration des variables
        Dim appExcel As Excel.Application 'Application Excel
        Dim wbExcel As Excel.Workbook 'Classeur Excel
        Dim wsExcel As Excel.Worksheet 'Feuille Excel
        Dim Tbl
        Dim Lig As Long
     
        Set appExcel = CreateObject("Excel.Application")
        appExcel.Visible = True
        Set wbExcel = appExcel.Workbooks.Open("F:\Documents\test.xlsx")
        Set wsExcel = wbExcel.ActiveSheet
     
        Tbl = Array("Nom", "Prénom", "N° tél fixe", "N° tél mobile", _
                    "Adresse", "Problèmes", "Date")
     
        If Range("A1") = "" Then
     
            Range("A1:G1") = Tbl
     
        End If
     
        Lig = Range("A65536").End(-4162).Row + 1
     
        Erase Tbl
     
        Tbl = Array(Nom.Text, Prenom.Text, TelFixe.Text, TelMobile.Text, _
                    Adresse.Text, "Ici pas de Problème ?", "Le " & Date & " à " & Time)
     
        'transfert des données saisies dans le classeur excel
     
        Range("A" & Lig & ":G" & Lig) = Tbl
     
        ActiveWorkbook.Save
        wbExcel.Close 'Fermeture du classeur Excel
        appExcel.Quit
        Set wsExcel = Nothing
        Set wbExcel = Nothing
        Set appExcel = Nothing
     
        'on efface les données saisies
        Nom.Text = "Nom"
     
        Prenom.Text = "Prénom"
     
        TelFixe.Text = "N° tél fixe"
     
        TelMobile.Text = "N° tél mobile"
     
        Adresse.Text = "Adresse"
     
        Prob.Text = ""
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut
    Merci Hervé d'avoir répondu mais hélas l'erreur revient

    J'ai oublié de stipuler que je suis en architecture x64 en windows 7 sur un Imac, est ce que ça change quelque chose ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Désolé, je n'ai pas pu tester ce que je t'ai posté hier (trop tourné vers Excel :-(( ). Ce qui suit marche chez moi (Windows 7 64 bits sur PC) :
    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
     
        Private Sub Command1_Click()
     
            'Déclaration des variables (Microsoft.Office.Interop évite l'import)
            Dim appExcel As New Microsoft.Office.Interop.Excel.Application
            Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook
            Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet
            Dim Tbl As String()
            Dim Lig As Long
     
            'rend l'application visible mais comme elle est fermée dans la foulée est-ce bien nécessaire ?
            appExcel.Visible = True
     
            'ouvre le classeur
            wbExcel = appExcel.Workbooks.Open("D:\Classeur1.xls")
            wsExcel = wbExcel.ActiveSheet
     
     
            With wsExcel
     
                ' si A1 est vide, création des entêtes
                If .Range("A1").Value = "" Then
     
                    'initialise le tableau avec les entêtes
                    Tbl = New String(6) {"Nom", "Prénom", "N° tél fixe", "N° tél mobile", "Adresse", "Problèmes", "Date"}
     
                    .Range("A1:G1").Value = Tbl
     
                End If
     
                'vide
                Erase Tbl
     
                'recherche la dernière ligne non vide en partant du bas de la feuille
                Lig = .Range("A" & .Rows.Count).End(-4162).Row + 1
     
                'initialise le tableau avec les valeurs des champs
                Tbl = New String(6) {Nom.Text, Prenom.Text, TelFixe.Text, TelMobile.Text, Adresse.Text, Prob.Text, "Le " & Now}
     
                'transfert des données saisies dans le classeur excel
                .Range("A" & Lig & ":G" & Lig).Value = Tbl
     
            End With
     
            wbExcel.Save()
            wbExcel.Close() 'Fermeture du classeur Excel
     
            appExcel.Quit()
     
            wsExcel = Nothing
            wbExcel = Nothing
            appExcel = Nothing
     
            'on efface les données saisies
            Nom.Text = "Nom"
     
            Prenom.Text = "Prénom"
     
            TelFixe.Text = "N° tél fixe"
     
            TelMobile.Text = "N° tél mobile"
     
            Adresse.Text = "Adresse"
     
            Prob.Text = ""
     
        End Sub
    Hervé.

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut
    Attend, je crois savoir d'où ça vient je suis sur le vieux VB6 et toi tu es sur le nouveau.

  6. #6
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut
    J'ai essayé sur le Visual Basic Express et j'ai une erreur de compilation lors de la déclaration des variables

Discussions similaires

  1. remplissage zone de liste (Combobox) : Erreur d'exécution 1004 !?
    Par ln0331 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2008, 17h02
  2. Réponses: 13
    Dernier message: 29/06/2007, 18h03
  3. Erreur d'exécution '1004' lors d'une mise en page
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2007, 09h00
  4. [VBA-E] Erreur d'exécution '1004'
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2007, 14h31
  5. [VBA-E] erreur d'exécution 1004 ?
    Par toy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 13h15

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