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 :

Macro si une case contient " alors supprimer la ligne [XL-2007]


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
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Par défaut Macro si une case contient " alors supprimer la ligne
    Bonjour,

    j'ai du mal avec ma macro : si une case contient " alors supprimer la ligne.
    J'ai l'impression que vba a du mal avec le caractère unique ".

    J'ai essayé les codes suivants avec Sheets("Sheet5").Range("C3") = " :

    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 Test()
    Dim i%
    For i = 256 To 1 Step -1
    If Cells(i, 1) = Sheets("Sheet5").Range("C3") Then Rows(i).Delete
    Next
    End Sub
     
    Sub suppr()
    Dim i As Integer
    For i = 1 To 256
    If Cells(i, 1) = Sheets("Sheet5").Range("C3") Then
    Rows(i).Delete
    i = i - 1
    End If
    Next
    End Sub
     
    Sub suppr()
    Dim j As Integer
    With ThisWorkbook.Sheets("Sheet6")
        For j = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
                If .Range("A5" & j).Value = Sheets("Sheet5").Range("C3") Then
                        .Rows(j).Delete
                End If
        Next j
    End With
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Salut,

    en ligne 9 et 19 tu as "Sub suppr()" Donc dejà là c'est un soucis 2 macro ne peuvent porter le même nom à moins d'être Private

    De plus j'ai pas compris tu testes un apostrophe(') ou un guillement(") et test où

    tu dis

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Par défaut
    Hello, merci pour ta réponse,

    En fait c'est la même macro écrite de 3 façons différentes donc pour le nom de chaque macro c'est pas grave pour la répétition.

    Je teste un guillement en sheet6

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    et en quelle(s) cellule(s) ?

    Et Guillemet seul ou avec du texte ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    et en quelle(s) cellule(s) ?
    Colonne I

    Désolé pour ces explications fragmentées ...

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour.

    En dehors du problème technique du guillemet pouvant s'écrire par Chr(34) ou """" (oui ! quatre guillemets collés à la suite …),

    de toute manière égale ne veut pas dire contient

    Pour tester si une valeur contient quelque chose, voir l'aide de VBA concernant la fonction InStr.

    Sinon pour plus de rapidité envisager la méthode Find au lieu de boucler sur les cellules d'une plage …

  7. #7
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Salut

    Vu que tu dis pas quelle version tu as voici une petite macro sans prétention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Supppr()
        Dim i As Long
        Dim Plage As String
     
        For i = 2 To 65536
            If Cells(i, 9).Value = Chr(34) Then
                Plage = i & ":" & i
                Rows(Plage).Delete Shift:=xlUp
                i = i - 1
            End If
        Next i
    End Sub
    tu dis si ça te convient

    Ou alors si c'est vraiement du contient avec du texte cf mon post de 15h26
    alors tu peux utiliser Instr 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
    Sub suppppr()
        Dim i As Long
        Dim Plage As String
        Dim Cher_Car As String
        Cher_Car = Chr(34)
        For i = 2 To 65536
            If InStr(1, Cells(i, 9).Value, Cher_Car) <> 0 Then
                Plage = i & ":" & i
                Rows(Plage).Delete Shift:=xlUp
                i = i - 1
            End If
        Next i
    End Sub
    Tu dis si ça te convient

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

Discussions similaires

  1. Ecrire dans une case en fonction du nombre de lignes
    Par Paulinio86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2015, 11h20
  2. [AC-2010] Si une case est cochée alors verrouiller l'enregistrement
    Par marg0t dans le forum IHM
    Réponses: 3
    Dernier message: 06/08/2013, 18h09
  3. [XL-2007] Si une cellule contient le mot x, copierla ligne vers une autre sheet
    Par themansion dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2013, 09h13
  4. Si la cellule est vide alors supprimer la ligne correspondante
    Par dolin007 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/11/2009, 14h09
  5. Lancer une macro lors de la modif d'une case excel
    Par frevale dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/08/2006, 12h19

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