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 dans le code pour supprimer le contenu d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Points : 61
    Points
    61
    Par défaut Erreur 1004 dans le code pour supprimer le contenu d'une cellule
    Bonjour à toutes et tous

    J'ai codé un USF pour suppirmer une cellule. Celui dans la logique de programmation est identique à un autre que j'ai créé et qui marche
    Ci dessous le code fonctionnant
    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
    Option Explicit
        Dim no_section As Integer, del_auditeur As Integer, nom_auditeur  As Integer, i As Integer
     
    Private Sub UserForm_Initialize()
        'Ajout des valeurs des cellules A1 à Y1 de l'onglet "Sections-Auditeurs-Machines"
        For i = 1 To 25 'Liste des sections
            CbB_Section.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(1, i)
        Next
    End Sub
    Private Sub CbB_Section_Change()
        'Zone de liste vidée (sinon les valeurs s'ajoutent)
        CbB_Suppr_Auditeur.Clear
     
     
        'Liste des "section" a sélectionner (ListIndex commence à 0)
        no_section = CbB_Section.ListIndex + 1
        'Liste des auditeurs de la colonne section choisie
        nom_auditeur = Worksheets("Sections-Auditeurs-Machines").Cells(1, no_section).End(4).Row
        'Recherche du nombre de lignes poste de la colonne section choisie
        For i = 2 To nom_auditeur
            CbB_Suppr_Auditeur.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(i, no_section)
        Next
    End Sub
    Private Sub Supprimer_Click()
     
        Application.ScreenUpdating = False
     
    'Activation de la feuille "Sections-Auditeurs-Machines"
        Worksheets("Sections-Auditeurs-Machines").Activate
     
    'Détermine la valeur de la sélection
    del_auditeur = CbB_Suppr_Auditeur.ListCount + 1
     
    'Supprime l'auditeur choisi dans la section concernée
        If del_auditeur <> Null Or del_auditeur > 0 Then
            ActiveSheet.Cells(del_auditeur, no_section).ClearContents
            MsgBox "L'auditeur a été supprimé avec succès!"
        End If
     
        Application.ScreenUpdating = True
     
    'Fermer l'USF Formulaire
        Unload Me
     
    End Sub
    Private Sub Annuler_Click()
        Unload Me
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        If CloseMode = vbFormControlMenu Then Cancel = True
    End Sub
    Le problème est sur la ligne 34 du code ci-dessous où j'ai l'erreur 1004 qui est générée
    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
    Option Explicit
        Dim no_section As Integer, no_poste As Integer, del_poste As Integer, i As Integer
     
    Private Sub UserForm_Initialize()
        'Ajout des valeurs des cellules A1 à Y1 de l'onglet "Sections-Auditeurs-Machines"
        For i = 1 To 25 'Liste des sections
            CbB_Section.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(1, i)
        Next
    End Sub
    Private Sub CbB_Section_Change()
     
        Dim no_section As Integer, nom_auditeur As Integer, no_poste As Integer
     
        'Liste des "section" a sélectionner (ListIndex commence à 0)
        no_section = CbB_Section.ListIndex + 1
        'Liste des postes de la colonne section choisie
        no_poste = Worksheets("Sections-Auditeurs-Machines").Cells(6, no_section).End(xlDown).Row
            For i = 6 To no_poste
                CbB_Suppr_Poste.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(i, no_section)
            Next
    End Sub
    Private Sub Supprimer_Click()
     
        Application.ScreenUpdating = False
     
    'Activation de la feuille "Sections-Auditeurs-Machines"
        Worksheets("Sections-Auditeurs-Machines").Activate
     
    'Détermine la valeur de la sélection
    del_poste = CbB_Suppr_Poste.ListCount
     
    'Supprime l'auditeur choisi dans la section concernée
        If del_poste <> Null Or del_poste > 0 Then
            ActiveSheet.Cells(del_poste, no_section).ClearContents
            MsgBox "Le poste a été supprimé avec succès!"
        End If
     
        Application.ScreenUpdating = True
     
    'Fermer l'USF Formulaire
        Unload Me
     
    End Sub
    Private Sub Annuler_Click()
        Unload Me
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        If CloseMode = vbFormControlMenu Then Cancel = True
    End Sub
    Quelqu'un peut-il m'aider à y comprendre pourquoi cette génération d'erreur

    Cordialement

  2. #2
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Tu ne contrôle que "del_poste" mais que vaut "no_section" ?

    Hervé.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Points : 61
    Points
    61
    Par défaut
    Salut Theze

    J'ai trouvé la solution à mon problème comme un grand!

    Je te remerci d'avoir planché sur mon problème.

    Voici le code que j'ai trouvé
    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
    Option Explicit
        Dim no_section As Integer, del_poste As Integer, no_poste  As Integer, i As Integer, colonne As Long, LastLig As Long, c As Range
     
    Private Sub UserForm_Initialize()
        colonne = Cells(1 & Columns.Count).End(xlToRight).Column
        'Ajout des valeurs des cellules A1 à ... de l'onglet "Sections-Auditeurs-Machines"
        For i = 1 To colonne 'Liste des sections
            CbB_Section.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(1, i)
        Next
    End Sub
    Private Sub CbB_Section_Change()
        'Zone de liste vidée (sinon les valeurs s'ajoutent)
        CbB_Suppr_Poste.Clear
     
        'Liste des "section" a sélectionner (ListIndex commence à 0)
        no_section = CbB_Section.ListIndex + 1
        'Liste des auditeurs de la colonne section choisie
        no_poste = Worksheets("Sections-Auditeurs-Machines").Cells(6, no_section).End(xlDown).Row
        'Recherche du nombre de lignes poste de la colonne section choisie
        For i = 6 To no_poste
            CbB_Suppr_Poste.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(i, no_section)
        Next
    End Sub
    Private Sub Supprimer_Click()
     
        Application.ScreenUpdating = False
     
    'Supprime le poste choisi dans la section concernée de l'onglet "Sections-Auditeurs-Machines"
        'Activation de la feuille "Sections-Auditeurs-Machines"
            Worksheets("Sections-Auditeurs-Machines").Activate
     
        'Détermine la valeur de la sélection (listIndex commence à 6)
            del_poste = CbB_Suppr_Poste.ListIndex + 6
     
        'Supprime le poste choisi dans la section concernée de l'onglet "Sections-Auditeurs-Machines
            Cells(del_poste, no_section).Delete Shift:=xlUp
     
    'Supprime le poste choisi dans la section concernée de l'onglet "Indicateurs Machines"
        'Activation de la feuille "Sections-Auditeurs-Machines"
            Worksheets("Indicateurs Machines").Activate
     
        'Copie des lignes à sélectionner dans cellules de destinations
            LastLig = Worksheets("Indicateurs Machines").Cells(Rows.Count, 1).End(xlUp).Row
                ActiveSheet.Range("$A$1:$E$" & LastLig).AutoFilter Field:=1
     
                For i = 1 To LastLig
                    Set c = Range("A" & i & ":E" & i).Find(CbB_Suppr_Poste.Value, LookIn:=xlValues, Lookat:=xlWhole)
                    If Not c Is Nothing Then
                        c.EntireRow.Delete Shift:=xlUp
                        Set c = Nothing
                    End If
                Next i
     
    'Affiche le message de réussite
        MsgBox "Le poste a été supprimé avec succès!"
     
        Application.ScreenUpdating = True
     
    'Fermer l'USF Formulaire
        Unload Me
     
    End Sub
    Private Sub Annuler_Click()
        Unload Me
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        If CloseMode = vbFormControlMenu Then Cancel = True
    End Sub
    Je ne serais pas contre une critique sur ce code

    Cordialement

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

Discussions similaires

  1. [Toutes versions] Macro pour copier le contenu d'une cellule d'un fichier excel et coller dans une form
    Par wizishop dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 16/10/2015, 12h05
  2. [XL-2010] Macro pour manipuler le contenu d'une cellule
    Par h12enri dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2013, 07h57
  3. Macro pour supprimer les lettres d'une cellule?
    Par LittleSun dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2010, 19h56
  4. Code pour empêcher la modifcation d'une cellule
    Par gaefor dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/08/2007, 05h55
  5. Réponses: 2
    Dernier message: 06/04/2007, 12h17

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