Visual Basic - Suppression ligne si texte

Spit -  
 Spit' -
Bonjour,

Voila mon dilemme,
je cherche a supprimer des lignes sous excel si et seulement si les 5 premiers caractères de la cellule Bx (x étant le numéro de ligne) ne sont pas des chiffres.

Alors j'arrive a extraire ces 5 premiers caracteres dans une nouvelle colonne mais apres je ne sais pas comment supprimer les lignes qui ne contiennent pas un nombre a 5 chiffres.

exemple

A B
2009032250 FUITE CREMAILLERE DIRECTION  157
2009032251 44575 / JEU PEDALE ACCELERATEUR  157

dans cet exemple j'arrive a faire ceci:

A B C
2009032250 FUITE CREMAILLERE DIRECTION 157
2009032251 44575 / JEU PEDALE ACCELERATEUR 157

mais je n'arrive pas a supprimer la ligne 1

merci de votre aide
Configuration: Windows XP
Firefox 3.0.8

9 réponses

  1. redonky Messages postés 103 Statut Membre 23
     
    voila;)

    cell(X,"b").Select
    Selection.EntireRow.Delete
    1
  2. Spit
     
    oui d'accord mais mon classeur possede une centaine de lignes. et je ne dois garder QUE les lignes qui ont des chiffres dans la colonne B. comment faire la différence entre une cellule avec des chiffres et une cellule avec des lettres ?
    0
  3. redonky Messages postés 103 Statut Membre 23
     
    Il y a une commande pour savoir ce qu'il y a dans la cellule, mais je ne la connait plus:s
    0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Pas très clair comme explication, occupons nous que de la colonne B.

    Quel type de saisie trouve t on dans cette colonne et sur quel critère devons nous supprimer la ligne.
    Tu parles de numéro de ligne, c’est un numéro en colonne A par exemple ou le numéro d’index de ligne.

    Le mieux est de monter un fichier exemple avec des annotations, dans cette cellule j’ai ça je je souhaiterai obtenir ça etc ...

    Pour joindre ton exemple avec ce lien

    https://www.cjoint.com/

    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. SPit
     
    ah pardon j'avais meme pas vu que la mise en page avait foiré

    en fait dans les cellules B j'ai ce type de contenu

    FUITE CREMAILLERE DIRECTION

    OU

    44575 / JEU PEDALE ACCELERATEUR

    et je veux garder que les lignes ou il y a les 5 chiffres devant et supprimer toutes les autres

    pour ca j'ai décidé d'extraire les 5 premiers caracteres dans une colonne pour obtenir:

    FUITE

    OU

    44575

    et donc la la ligne contenant 44574 je veux la garder et l'autre je veux la supprimer

    c'est plus clair ? merci a vous de prendre du temps en cette soirée de UEFA'cup (en meme temps le match est pas top palpitant)
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    En supposant que tes reférences (44578 / JEU PEDALE ACCELERATEUR) sont colonne B

    En colonne C pose cette formule en C2 et incrémente vers le bas =--(ESTNUM((GAUCHE(B2;5)*1)))

    Dans un module macro colles ce code que tu associes à un bouton pour déclencher la macro

    Sub test()
    Dim Lig As Long
    Dim Col As String
    Dim NbrLig As Long
    Dim LigFin As Long
    Col = "C"
    LigFin = Range("B65536").End(xlUp).Row + 1
    With Sheets("Feuil3")
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    For Lig = 1 To NbrLig
    If .Cells(Lig, Col).Value = 0 Then
    .Cells(Lig, Col).EntireRow.Delete
    End If
    Next
    End With
    Application.CutCopyMode = False
    MsgBox ("Références texte supprimées")
    End Sub

    Si c'est ce que tu attends, on insérera la création de la formule dans le code et voir un code plus épuré

    A+
    0
  8. Spit'
     
    exactement ce que je cherchais pour la fonction ESTNUM
    je vais l'integrer et je mettrais le code de la macro ici

    merci
    0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Sans saisir de formule colonne C, elle est intégrée dans le code macro, donc tout automatique, colles ce code dans un module que tu associes à un bouton, si ça te va, on créera plus tard un commandbutton avec le code intégré

    Sub test()
    Dim Lig As Long
    Dim Col As String
    Dim NbrLig As Long
    Dim LigFin As Long
    'crée la formule en C2 et incrémente de C2 à C50
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
    "=IF(RC[-1]<>"""",--(ISNUMBER((LEFT(RC[-1],5)*1))),"""")"
    Selection.AutoFill Destination:=Range("C2:C50"), Type:=xlFillDefault

    Col = "C"
    LigFin = Range("B65536").End(xlUp).Row + 1
    With ActiveSheet ' ou Sheets("Feuil3")
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    For Lig = 1 To NbrLig
    If .Cells(Lig, Col).Value = 0 Then
    .Cells(Lig, Col).EntireRow.Delete
    End If
    Next
    End With
    'Supprime les formules crées
    Range("C2:C50").ClearContents

    MsgBox ("Il n'y a plus de références texte")
    End Sub

    A+
    0
  10. Spit'
     
    voila mon code final:

    'SUPPRESSION LIGNE SANS SIGNALEMENT

    For h = 2 To f - 1 Step 1

    Cells(h, 15).Select
    ActiveCell.FormulaR1C1 = "=--(isnumber((left(RC[-13],5)*1)))"

    Next h

    Dim w As Integer
    w = 2
    Do

    If Cells(w, 15) <> 1 Then
    Range(w & ":" & w).Delete shift:=xlUp
    w = w - 1
    End If

    w = w + 1

    Loop Until Cells(w, 1) = Empty

    c'est peut etre pas otpimisé mais ca marche. merci a beaucoup pour l'aide
    0