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 '1004' : feuille excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Points : 59
    Points
    59
    Par défaut Erreur '1004' : feuille excel
    Bonjour,

    A partir d'une feuille excel je voudrais exporter le contenu vers un autre fichier excel.

    J'ai une liste non ordonnée de locaux avec des switch.
    Les locaux ne sont pas specialement l'un apres l'autre, exemple un local peut etre mentionné au début, et je peux le retrouver a mi chemin.
    Un autre :
    Au debut j'ai le LocalName = SZ36I et le SwitchName = SZW600 donc je crée la feuille (dans le classeur 2) nommée SZ36I avec a la ligne 3 la valeur SZW600.
    Ensuite ligne d'apres (classeur 1), j'ai LocalName = SZ28U et le SwitchName = SZW234 donc je crée la feuille (dans le classeur 2) nommée SZ28U avec a la ligne 3 la valeur SZW234.
    Apres, j'ai encore le LocalName = SZ36I mais avec le SwitchName = SZW768, donc là, la ligne dispo est la 8 c'est ici que je devrais inserer le switch.

    Et la j'ai une erreur :
    erreur '1004' :
    erreur définie par l'aplication ou par l'objet
    Donc en fait a chaque fois que je reviens sur un onglet deja créer il bug lors de la fusion ...

    Code ppl :
    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
    Private Sub export_Click()
     
        Dim cl1 As Workbook, cl2 As Workbook
        Dim f1 As Worksheet
     
        Set cl1 = ActiveWorkbook
        Set f1 = cl1.Worksheets("Etat Switch")
     
        Dim Fichier As String, nomclasseur As String
     
        'ajoute un nouveau classeur
        Application.Workbooks.Add
     
        'nomme ton classeur
        nomclasseur = Format(Date, "DD-MM-YYYY") & "-" & "Etat_Switch"
     
        'donne le chemin et l'extension du fichier
        Fichier = "C:\User\...\Documents\Stagiaire_POUCET\Switch\" & nomclasseur & ".xls"
     
        'sauvegarde le nouveau fichier
        ActiveWorkbook.SaveAs Fichier
     
        Set cl2 = ActiveWorkbook
     
     
     
        'fais le tour du tableau pour trouver tout les switch de tout les locaux
        For i = 1 To 5000
     
            'si c'est un switch prend la première et tout le reste ce fait à partir de cette première ligne
            '* avant et apres car dans le tableau le switch commence par un espace
            If f1.Cells(i, 3).Value Like "*swz*" Then
     
                SwitchName = f1.Cells(i, 3).Value
                LocalName = f1.Cells(i, 2).Value
                dbt_tab_switch = i
     
     
                'depuis le premier local trouver la ligne de fin du switch
                For j = dbt_tab_switch To dbt_tab_switch + 55
     
     
                    'si on arrive sur une ligne blanche mais que les ports du switch sont encore present apres la separation
                    If ((f1.Cells(j, 3) = "") And (f1.Cells(j + 3, 2) = LocalName) And (f1.Cells(j + 3, 4) = "FA")) Then
     
                        j = j + 2
     
                        'sinon si le nom est différent du switch ou qu'apres la separation c'est un autre switch le tableau est fini
                    ElseIf ((f1.Cells(j, 3) <> SwitchName) Or ((f1.Cells(j, 3) = "") And ((f1.Cells(j + 4, 2) <> SwitchName) Or (f1.Cells(j + 4, 4) <> "FA")))) Then
     
                            fin_tab_switch = j - 1
                            j = dbt_tab_switch + 55
     
                    End If
     
     
                Next j
     
     
                'pour donner à i la debut du prochain switch
                'si il y a une sépération (3 ligne entre chaque séparation i recoit i + les trois lignes
                If ((f1.Cells(fin_tab_switch + 1, 3) = "") And (f1.Cells(fin_tab_switch + 3, 3) <> "")) Then
     
                    i = fin_tab_switch + 3
     
                    'sinon si le tableau commence la ligne d'apres
                ElseIf (f1.Cells(fin_tab_switch + 1, 3) <> "") Then
     
                        i = fin_tab_switch + 1
     
                    'sinon c'est que le tableau de tout les switch est fini
                    Else: i = 5000
     
                End If
     
     
     
                'ICI POUR LA CREATION DES LOCAUX
     
                proc = create_locaux(cl2, LocalName, SwitchName, dbt_tab_switch, fin_tab_switch)
     
                proc = create_switch(cl2, LocalName, SwitchName, dbt_tab_switch, fin_tab_switch)
     
     
            End If
     
     
        Next i
     
        For Each objFeuille In cl2.Sheets
          If objFeuille.Name Like "Feuil*" Then
     
            Application.DisplayAlerts = False
            objFeuille.Delete
            Application.DisplayAlerts = True
     
          End If
        Next
     
     
     
    End Sub
    Et les fonctions :
    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
    '|||||||| CREATION LOCAUX ||||||||
     
    Public Function create_locaux(ByRef cl2 As Excel.Workbook, ByVal LocalName As String, ByVal SwitchName As String, ByVal dbt_tab_switch As Integer, ByVal fin_tab_switch As Integer)
     
        FeuilleExiste = False
     
        For Each objFeuille In cl2.Sheets
          If objFeuille.Name = LocalName Then
            FeuilleExiste = True
            Exit For
          End If
        Next
     
     
        'si le local n'existe pas on le crée sauf pour la colonne du switch chwas1 et chwas2
        'et que le LocalName n'est pas vide
        If ((FeuilleExiste = False) And (SwitchName <> " swzas1") And (SwitchName <> " swzas2")) And (LocalName <> "") Then
     
            'création de la feuille
            cl2.Sheets.Add
     
            'renomme la feuille
            cl2.ActiveSheet.Name = LocalName
     
        End If
     
    End Function
    '|||||||| FIN CREATION LOCAUX ||||||||
     
     
     
    '|||||||| CREATION SWITCH ||||||||
     
    Public Function create_switch(ByRef cl2 As Excel.Workbook, ByVal LocalName As String, ByVal SwitchName As String, ByVal dbt_tab_switch As Integer, ByVal fin_tab_switch As Integer)
     
        Dim f2 As Worksheet
     
        Set f2 = cl2.Sheets(LocalName)
     
        'calcul de la premiere ligne dispo pour inserer le switch
        For l = 3 To 103 Step 5
     
            If (f2.Cells(l, 2) = "") Then
     
                ligne1 = l
                l = 103
     
            End If
     
        Next l
     
                'fusion de la première ligne disponible du switch (pour son nom)
                f2.Range(Cells(ligne1, 2), Cells(ligne1, 27)).Select
                With Selection
                    .MergeCells = True
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .Value = SwitchName
                End With
     
    End Function

    Aidez moi !! Il me reste que ca pour finir mon projet ...

    Cordialement

    Benjamin

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Benjycool et le forum
    erreur '1004' :
    Donc en fait a chaque fois que je reviens sur un onglet deja créer il bug lors de la fusion ...
    Où ? sur quelle ligne ?

    Juste une remarque : une Function n'a pas les mêmes possibilités qu'une Sub : Son but est de retourner une valeur, alors qu'une sub est prévue pour exécuter des actions. Il arrive souvent qu'une Function ne fonctionne pas, alors qu'en la transformant en Sub, il n'y a aucun problème.

    Dépanner une macro qui fonctionne (au moins une fois), à moins d'une évidence, demande de créer un fichier d'essai et d'éxécuter la macro en pas-à-pas pour vérifier le contenu des variables au moment de l'erreur. Chose que tu peux faire beaucoup plus facilement que nous, puisque tu sais ce qu'il faut faire pour avoir l'erreur.
    Tu avance en pas-à-pas avec F8 et tu mets un point d'arrêt sur la ligne.
    Tu réexécutes ta macro et quand elle se bloque sur le point d'arrêt, tu vérifies la variable qui coince. Puis tu recherches la ligne où cette variable est initialiser et tu recherche pourquoi ce n'est pas la bonne valeur.
    A+

Discussions similaires

  1. [XL-2010] erreur '1004' vba Excel
    Par chewi90 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/03/2015, 10h22
  2. [XL-2010] Erreur Envoie feuille excel en corps de mail
    Par xbooster dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2014, 15h09
  3. [E-07] erreur '1004' vba Excel (suite)
    Par mrah1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2009, 17h48
  4. erreur '1004' vba Excel
    Par mrah1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2009, 16h56
  5. erreur 1004 macro excel
    Par lerab51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 21h27

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