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 :

VBA pour supprimer cellule [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    FINANCIER
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : FINANCIER

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Par défaut VBA pour supprimer cellule
    Bonjour,

    J'ai mon fichier Macros qui me permet d'exécuter une macro pour supprimer dans mon fichier Banque de la colonne B les codes BANQUES BNP458 et POUY985.
    Le code ne s'exécute pas correctement. Pourriez-vous me venir en aide ?

    Voici mon code :

    Sub Suppr()

    Dim i As Integer
    With ThisWorkbook.Sheets("BASE")

    For i = .Range("B" & .Rows.Count).End(xlUp).Row To 2 Step -1


    If .Range("B" & i).Value = "BNP458" Then .Rows(i).Delete
    If .Range("B" & i).Value = "POUY985" Then .Rows(i).Delete

    End If
    Next i
    End With
    End Sub

    En vous remerciant beaucoup de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Je me permets quelques petites indications en préambule , en toute bienveillance :

    1. La plupart des utilisateurs n'ouvre pas les pièces jointes par soucis de sécurité.
    2. Utilise les balises de code # pour afficher du code, ce qui rendra le code plus lisible, tu recevras donc plus facilement de l'aide.
    3. "Le code ne s'exécute pas correctement" -> Cela revient à aller voir un médecin en disant "je suis malade". Il faut nous expliquer quels sont tes "symptômes", qu'est-ce qui ne fonctionne pas ou fonctionne mal ? As-tu un message d'erreur ? Etc.


    Cela étant dit, pour faire ce que tu souhaites faire, plutôt que de passer par une boucle, moi je ferai un filtre sur les valeurs que tu souhaites supprimer, et je supprimerais les lignes affichées par le filtre. Et si cela est possible pour ton jeu de données, je ferai même au préalable un tri sur la colonne B, ce qui rendrait le code beaucoup plus rapide si tu as beaucoup de lignes.

  3. #3
    Membre averti
    Homme Profil pro
    FINANCIER
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : FINANCIER

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Par défaut
    Bonsoir Matt955,

    Je ne peux pas vraiment faire de filtre puis supprimer les lignes, car dans mon fichier j'aurais plusieurs code Banque à supprimer.
    Le code erreur qui s'affiche est le suivant : "Erreur de compilation, End If sans bloc if".
    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
     
    Sub Suppr()
     
    Dim i As Integer
    With ThisWorkbook.Sheets("BASE")
     
    For i = .Range("B" & .Rows.Count).End(xlUp).Row To 2 Step -1
     
     
    If .Range("B" & i).Value = "BNP458" Then .Rows(i).Delete
    If .Range("B" & i).Value = "POUY985" Then .Rows(i).Delete
     
    End If
    Next i
    End With
    End Sub

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, comme ceci:

    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
    Sub SupprimeCodes()
     
    Dim ws As Worksheet
    Dim lastrow As Long
    Dim i As Long
     
    'Définition feuille de travail
    Set ws = ThisWorkbook.Worksheets("BASE")
    'Dernière cellule colonne B
    lastrow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
     
    Application.ScreenUpdating = False
     
    'Parcours de la colonne B, de bas en haut
    For i = lastrow To 2 Step -1
        ' Si code trouvé alors suppression de la ligne
        If Range("B" & i).Value = "BNP458" Or Range("B" & i).Value = "POUY985" Then
            Range("B" & i).EntireRow.Delete
        End If
    Next i
     
    Application.ScreenUpdating = True
     
    MsgBox "Traitement terminé!", vbInformation
     
     
    End Sub
    En relisant ton code, je vois que tu as 2 lignes if then, c'est ok, puis juste en dessous tu as un end if qui ne sert à rien.

  5. #5
    Membre averti
    Homme Profil pro
    FINANCIER
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : FINANCIER

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Par défaut
    Bonsoir Franc,

    Merci beaucoup pour ta proposition de réponse.
    La macro s'exécute depuis le fichier Macros. Est-ce que je peux inclure ce code au début de cette façon ? :
    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
     
    Sub SupprimeCodes()
     
    Workbooks.Open filename:="C:\chemin du fichier\Banque.xlsx"
     
     
    Dim ws As Worksheet
    Dim lastrow As Long
    Dim i As Long
     
    'Définition feuille de travail
    Set ws = ThisWorkbook.Worksheets("BASE")
    'Dernière cellule colonne B
    lastrow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
     
    Application.ScreenUpdating = False
     
    'Parcours de la colonne B, de bas en haut
    For i = lastrow To 2 Step -1
        ' Si code trouvé alors suppression de la ligne
        If Range("B" & i).Value = "BNP458" Or Range("B" & i).Value = "POUY985" Then
            Range("B" & i).EntireRow.Delete
        End If
    Next i
     
    Application.ScreenUpdating = True
     
    MsgBox "Traitement terminé!", vbInformation
     
     
    End Sub

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Ha, je n'avais pas compris que tu lançais la macro depuis un autre classeur. Je l'ai modifiée pour en tenir compte.
    Intègre la macro dans un module standard et lance-la manuellement ou tu peux l'affecter à un bouton.

    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
    Sub SupprimeCodes()
     
        'Ouvrir le classeur
        Dim wb As Workbook
        Set wb = Workbooks.Open(Filename:="C:\chemin du fichier\Banque.xlsx")
     
        Dim ws As Worksheet
        Dim lastrow As Long
        Dim i As Long
     
        'Définition feuille de travail
        Set ws = wb.Worksheets("BASE")
        'Dernière cellule colonne B
        lastrow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
     
        Application.ScreenUpdating = False
     
        'Parcours de la colonne B, de bas en haut
        For i = lastrow To 2 Step -1
            ' Si code trouvé alors suppression de la ligne
            If ws.Range("B" & i).Value = "BNP458" Or ws.Range("B" & i).Value = "POUY985" Then
                ws.Range("B" & i).EntireRow.Delete
            End If
        Next i
     
        Application.ScreenUpdating = True
     
        MsgBox "Traitement terminé!", vbInformation
     
        'Fermer le classeur et sauvegarder les modifications
        wb.Close SaveChanges:=True
     
    End Sub

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

Discussions similaires

  1. [XL-2007] VBA pour supprimer onglet en fonction du texte d'une cellule
    Par karlgina dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2017, 08h32
  2. Code VBA pour compter cellules
    Par pierrotyahoo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/02/2013, 17h23
  3. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  4. [XL-2010] Macro VBA pour supprimer des caractère situés après une valeur
    Par Guillaume_PMO dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2011, 17h06
  5. [WD-2000] Technique pour supprimer cellule contenant un certain texte
    Par ruliann dans le forum Word
    Réponses: 13
    Dernier message: 12/01/2011, 10h34

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