Rechercher : dans
Par :

Visual Basic - Suppression ligne si texte

Dernière réponse le 14 avr 2009 à 13:32:45 Spit, le 4 avr 2009 à 19:08:03 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Visual Basic Suppression ligne si texte » dans :
Erreur système : Microsoft Visual Basic VoirEn ouvrant Excel, vous rencontrez un message d'erreur. Une fenêtre au nom de "Microsoft Visual Basic" s'ouvre avec le contenu suivant : Erreur système &H80004005 (-2147467259). Erreur non spécifiée Pour corriger le problème, suivez les...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Comment savoir si on est bloqué sur MSN VoirSavoir si on vous a bloqué Savoir si on vous a supprimé Savoir si on vous a bloqué et supprimé Avec aMSN ou GAIM Avec un site web Méthode à l'ancienne Le logiciel Windows Live Messenger propose trois possibilités pour la gestion des...
Télécharger Visual Basic 6 Runtime (VB6 DLL) VoirLe Runtime Visual Basic 6 contient l'ensemble des librairies (DLL) nécessaires pour exécuter des programmes écrits en langage Visual Basic 6.0. Il contient notamment les DLL suivantes :...
Introduction à Visual Basic VoirPrésentation de Visual Basic Visual Basic est un outil développé par Microsoft pour développer facilement des applications fonctionnant sous Microsoft Windows ©. Visual Basic est, comme son nom l'indique, un outil visuel permettant de créer...

1

redonky, le 5 avr 2009 à 02:10:28

Voila;)

cell(X,"b").Select
Selection.EntireRow.Delete

Répondre à redonky

2

Spit, le 5 avr 2009 à 11:19:04

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 ?

Répondre à Spit

3

redonky, le 9 avr 2009 à 14:03:20

Il y a une commande pour savoir ce qu'il y a dans la cellule, mais je ne la connait plus:s

Répondre à redonky

4

Mike-31, le 9 avr 2009 à 20:43:29

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

http://www.cjoint.com/

A+

Répondre à Mike-31

5

SPit, le 9 avr 2009 à 21:29:17

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)

Répondre à SPit

6

Mike-31, le 10 avr 2009 à 10:19:30

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+

Répondre à Mike-31

7

Spit', le 12 avr 2009 à 00:17:20

Exactement ce que je cherchais pour la fonction ESTNUM
je vais l'integrer et je mettrais le code de la macro ici

merci

Répondre à Spit'

8

Mike-31, le 12 avr 2009 à 10:38:58

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+

Répondre à Mike-31

9

 Spit', le 14 avr 2009 à 13:32:45

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

Répondre à Spit'
Collection CommentÇaMarche.net