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 :

Script pour supprimer ligne dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut Script pour supprimer ligne dans Excel
    Bonjour,

    Je souhaiterais supprimer la première ligne de plusieurs fichiers Excel em même temps par le biais d'un script.
    Je ne sais pas comment m'y prendre.

    Merci encore pour votre aide.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,
    commence par construire la liste des fichiers concernés : Liste des fichiers d'un dossier + Liens
    Utilise l'enregistreur de macro pour dégrossir la syntaxe de suppression de ligne : Excel et l'enregistreur de macro
    Ensuite en balayant la liste des fichiers concernés avec la procédure idoine tu devrais arriver au résultat.

    Re, Un embryon de réponse, affecte un bouton à la procédure SelectionFichier
    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
    Option Explicit
     
    Sub SelectionFichier()
    Dim FD As FileDialog
     
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .InitialFileName = ThisWorkbook.Path & "\"
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "xls", "*.xls*", 1
            .ButtonName = "Ouvrir fichier"
            .Title = "Sélectionner un fichier Excel"
        End With
     
        If FD.Show = True Then
            DoEvents
            DelLigne FD.SelectedItems(1)
        End If
     
        Set FD = Nothing
    End Sub
     
    Private Sub DelLigne(sFichier As String)
    Dim Wkb As Workbook, Wsh As Worksheet
        Application.ScreenUpdating = False
        Set Wkb = Workbooks.Open(sFichier)
        Set Wsh = Wkb.Worksheets(1)
     
        Wsh.Rows("1:1").Delete Shift:=xlUp
     
        Application.DisplayAlerts = False
        Wkb.SaveAs Filename:=sFichier
        Wkb.Close
        With Application
            .DisplayAlerts = True
            .ScreenUpdating = True
        End With
        Set Wsh = Nothing
        Set Wkb = Nothing
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut
    Merci je vais essayer cela.
    On pourrait générer un exe ou en powershell pour effectuer l'action ?

    J'avais trouvé ce code la em vba qui faisait le boulot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub sbVBS_To_Delete_EntireRow()
    Rows(1).EntireRow.Delete
    End Sub
    Mais je sais pas comment automatiser ça sur plusieurs fichiers Excel différent.

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, toujours un embryon mais plus élaboré, ici la feuille "Feuil2" est concernée si elle existe.
    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
    Option Explicit
     
    Sub SelectionFichier()
    Dim FD As FileDialog
     
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .InitialFileName = ThisWorkbook.Path & "\"
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "xls", "*.xls*", 1
            .ButtonName = "Ouvrir fichier"
            .Title = "Sélectionner un fichier Excel"
        End With
     
        If FD.Show = True Then
            DoEvents
            Application.StatusBar = ""
            DelLigne FD.SelectedItems(1)
        End If
     
        Set FD = Nothing
    End Sub
     
    Private Sub DelLigne(sFichier As String)
    Dim Wkb As Workbook, Wsh As Worksheet, sFeuille As String
     
        Application.ScreenUpdating = False
     
        sFeuille = "Feuil2"
     
        Set Wkb = Workbooks.Open(sFichier)
     
        If FeuilleExiste(Wkb.Name, sFeuille) Then
            Set Wsh = Wkb.Worksheets(sFeuille)
            Wsh.Rows("1:1").Delete Shift:=xlUp
            Application.DisplayAlerts = False
            Wkb.SaveAs Filename:=sFichier
            Application.DisplayAlerts = True
            Set Wsh = Nothing
        End If
     
        Wkb.Close
        Set Wkb = Nothing
     
        Application.ScreenUpdating = True
    End Sub
     
     
    Private Function FeuilleExiste(sClasseur As String, sFeuille As String) As Boolean
    Dim v As Variant
        v = Evaluate("ISREF('[" & sClasseur & "]" & sFeuille & "'!A1)")
        FeuilleExiste = IIf(IsError(v), False, v)
    End Function
    Salut, pour traiter des fichiers en masse voir lien du post# 2 et l'adapter à ton contexte.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut
    Je vais tester tt ça demain
    Je te tiens au courant.
    En tt cas merci merci bien

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, une version qui fonctionne ici sur les "Feuil2" de mes tests, donc à adapter à ton contexte ( dans Private Sub DelLigne(sFichier As String) sFeuille = .... ). Bref cela fait un peu marteau-pilon pour écraser des noisettes .....
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut
    Hey ))
    Ca fonctionne c'est super merci beaucoup.
    Penses-tu qu'il est possible de script cela maintenant ?
    Genre je lance un exe et bam ca execute l'action qui est faite par le bouton "Supprimer Ligne".

    Merci encore c'est super sympa

Discussions similaires

  1. Bouton pour supprimer ligne dans JTable
    Par djosimd dans le forum Débuter
    Réponses: 0
    Dernier message: 16/02/2014, 19h12
  2. Réponses: 7
    Dernier message: 24/01/2012, 18h55
  3. VBS pour supprimer ligne dans ficher texte
    Par t_predator dans le forum VBScript
    Réponses: 6
    Dernier message: 11/08/2008, 15h20
  4. Réponses: 2
    Dernier message: 18/05/2006, 13h38
  5. [C#][Débutant] 4 questions pour supprimer ligne dans datagriview
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/05/2006, 23h42

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