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 :

Suppression de ligne en VBA si une cellule contient un chiffre [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    conseillé de gestion
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : conseillé de gestion
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut Suppression de ligne en VBA si une cellule contient un chiffre
    Bonjour à tous,

    Je suis nouveau sur le forum et je débute en VBA. Voici ma problématique :

    Je souhaite dans une plage de donnée variable supprimer les lignes dont les valeurs de la colonne C sont des chiffres(de 0 à 1 000 000) à partir de la ligne 10.
    Les autres cellules de la colonne C contiennent soit du texte ou elles sont vides la plus part du temps.




    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Salut,
    Tu veux vraiment du vba ? Moi je te propose de mettre une colonne supplémentaire que tu pourras retirer après. Dans celle-ci tu indiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = ISNUMBER (GAUCHE (C2) * 1)
    Ainsi tu auras toutes tes cellules marquées par true ou false. Tu tries et tu effaces tes lignes.

  3. #3
    Membre régulier
    Homme Profil pro
    conseillé de gestion
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : conseillé de gestion
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Merci pour ta réponse. Mais j'ai besoin d'une solution en VBA, c'est une procédure à mettre en place dans mon code...

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,
    Citation Envoyé par Tomih Voir le message
    Merci pour ta réponse. Mais j'ai besoin d'une solution en VBA, c'est une procédure à mettre en place dans mon code...
    Essaies ce code, pour des nombres, mais pas pour des chiffres (un chiffre c'est du texte qui représente un nombre) :
    Code VBA : 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
    Option Explicit
    Sub Test()
    Dim rngData As Range
      Set rngData = ActiveSheet.Range("C10").CurrentRegion 'à adapter éventuellement
      Call SupprimerLignesSiChiffreEnColonneC(rngData)
    End Sub
    Sub SupprimerLignesSiChiffreEnColonneC(rng As Range)
    Dim col As Range
    Dim noL As Long
      Set col = rng.Parent.Columns("C:C")
      If Intersect(rng, col) Is Nothing Then Exit Sub  'pas de colonne C dans la plage
      noL = rng.Row + rng.Rows.Count - 1
      If noL < 10 Then Exit Sub                        'pas de ligne 10 dans la plage
      Application.ScreenUpdating = False
      For noL = rng.Row + rng.Rows.Count - 1 To 10 Step -1
        If VarType(rng.Parent.Cells(noL, "C").Value) = vbDouble Then
          rng.Rows(noL - rng.Row + 1).Delete shift:=xlShiftUp
        End If
      Next noL
      Application.ScreenUpdating = True
    End Sub

  5. #5
    Membre régulier
    Homme Profil pro
    conseillé de gestion
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : conseillé de gestion
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Merci beaucoup pour ton aide ça fonctionne parfaitement !

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Sauf si le test de valeur numérique porte sur le type (Integer, Long..), il y a beaucoup plus simple

    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
    Option Explicit
     
    Sub suppr_nombres()
     
    Dim derl As Integer
     
    With Worksheets(1)
        derl = .Cells(.Rows.Count, 3).End(xlUp).Row
        With .Range("C10:C" & derl)
                .SpecialCells(xlCellTypeConstants, 1).Replace What:="*", Replacement:=""
                .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        End With
    End With
     
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/10/2017, 11h47
  2. [XL-2013] VBA / couleurs de lignes selon contenu d'une cellule.
    Par bruno3724 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/11/2015, 16h34
  3. Suppression d'une ligne en fonction d'une cellule
    Par flo1411 dans le forum Excel
    Réponses: 6
    Dernier message: 26/03/2013, 16h28
  4. vba écrire une cellule pour chaque ligne écrite
    Par Chris171717 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/03/2013, 11h53
  5. [VBA-E]suppression lignes a partir d'une cellule active
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/02/2007, 15h01

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