![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: janvier 2008
Messages: 318
|
Bonjour a tous,
J'ai besoin de votre aide sur ce problème. J'importe souvent un fichier texte dans un fichier Excel, car je dois le travailler souvent. Dans la feuille "Base de donnée", j'ai l'importation du fichier TXT, et dans la feuille Trie, j'ai des numéro un en dessous de l'autre. Ce que je voudrais, c'est qu'à chaque numéro de la feuille de trie, qu'il supprime les lignes de la feuille "Base de donnée". Exemple: Feuille de Trie: 01517 01521 Feuille base de donnée: 01517 G1514013700 606 5814 319062609111301230ND$$10.63 5062409N 01517 G1714013650 837 9827 619062609111301230ND$$20.63 5062409N 01517 G3014013630 537 1498 75062609111301230ND$$2.50 5062409N 01517 G3714013690 148 482 31062609111301230ND$$1.03 5062409N 01518 G1514013830 821 7861 418062609111301230ND$$13.93 5062409N 01518 G1714013720 280 1963 218062609111301230ND$$7.27 5062409N 01518 G1714014070 544 5994 378062609111301230ND$$12.60 5062409N 01518 G3014013800 569 1470 84062609111301230ND$$2.80 5062409N 01518 G3714013740 186 674 37062609111301230ND$$1.23 5062409N 01519 G1514013790 403 4095 249062609111301230ND$$8.30 5062409N 01519 G1714014060 504 5687 458062609111301230ND$$15.27 5062409N 01519 G1714014180 88 1175 135062609111301230ND$$4.50 5062409N 01519 G3014013780 365 832 50062609111301230ND$$1.67 5062409N 01519 G3714013840 120 310 34062609111301230ND$$1.13 5062409N 01520 G1514013870 681 8466 424062609111301230ND$$14.13 5062409N 01520 G1714013930 578 6813 415062609111301230ND$$13.83 5062409N 01520 G1714014150 263 1980 199062609111301230ND$$6.63 5062409N 01520 G3014014270 576 2008 107062609111301230ND$$3.57 5062409N 01520 G3714013850 190 603 51062609111301230ND$$1.70 5062409N 01521 G1514014020 486 4437 241062609111301230ND$$8.03 5062409N Donc dans la feuille base de donnée, toutes les lignes qui débutent par 01517 et 01521 seront supprimées. Comment faire S.V.P? Merci encore pour votre aide matrix |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Sète
Messages: 3 864
|
Bonjour Matrix, bonjour le forum,
je te propose la macro suivante : Code:
Sub Macro1()
Dim t As Worksheet, b As Worksheet 'déclare les varoavles t et d (les onglets Trie et Base de donné)
Dim cel As Range 'décalre la variable cel (CELlule)
Dim vr As String 'déclare la variaable vr (Valeur Recherchée)
Dim x As Long 'déclare la variable x
Application.ScreenUpdating = False 'masque les changements à l'écran
Set t = Sheets("Trie") 'définit la variable t
Set b = Sheets("Base de donnée") 'définit la variable b
For Each cel In t.Range("A1:A" & t.Range("A65536").End(xlUp).Row) 'boucle 1 : sur toutes les cellules éditée cel de la colonne A de l'onglet "Trie"
vr = cel.Value 'définit la variable cel
For x = b.Range("A65536").End(xlUp).Row To 1 Step -1 'boucle 2 : inversée sur toutes les cellules éditée de la colonne A de l'onglet "Base de donnée"
If Left(Cells(x, 1), 5) = vr Then Rows(x).Delete 'si les 5 premiers caractères correspondent à la variable vr, supprime la ligne
Next x 'prochaine cellules de la boucle 2
Next cel 'prochaine cellule de la boucle 1
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub
|
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: juin 2007
Localisation: Nouméa
Messages: 4 136
|
Bonsoir,
Bonsoir, Robert... ![]() une autre variante.. Code:
Sub suppr()
Dim Cel As Range
Dim Lignes As Object
Dim I As Long
Application.ScreenUpdating = False
Set Lignes = CreateObject("Scripting.Dictionary")
With Sheets("Trie")
For Each Cel In .Range("A1:A" & .[A65000].End(xlUp).Row)
tmp = tmp & "," & Cel.Value
Next Cel
End With
With Sheets("Base de donnée")
For Each Cel In .Range("A1:A" & .[A65000].End(xlUp).Row)
If InStr(1, tmp, Left(Cel, 5)) > 0 Then _
Lignes.Item(Cel.Row) = Cel.Row
Next Cel
End With
temp = Application.Transpose(Lignes.Items)
For I = UBound(temp) To LBound(temp) Step -1
Rows(temp(I, 1)).Delete
Next I
End Sub
|
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2008
Messages: 85
|
Bonjour à tous,
Je ne sais pas si vous avez remarqué que les deux macros proposées par "Robert" et "bhbh" suppriment les lignes qui commencent aussi par 01543 , 03201 , 03210... Mais il faut reconnaitre à l'élaboration très rapide de ces macros... |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: juin 2007
Localisation: Nouméa
Messages: 4 136
|
Re-,
dans le fichier, regarde dans l'onglet "Trie", on a compris qu'il fallait supprimer toutes les lignes qui commençaient par les nombres écrits dans cet onglet.... |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: janvier 2008
Messages: 318
|
Petite question encore.
Dans la rangé a de la feuille trie, comment faire en sorte que le chiffre indiqué, exemple 1530, devienne en format texte en 5 caracteres. ex: 1530 deviens 01530. s'il a déja 5 caracteres, ex 58350, il reste pareille. JMP |
|
|
|
|
|
#10 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: septembre 2007
Messages: 3 299
|
Bonjour,
Code:
Sub supLignes()
Application.ScreenUpdating = False
Set Dico = CreateObject("Scripting.Dictionary")
For Each c In Sheets("trie").[A1].CurrentRegion: Dico(c.Text) = "": Next c
i = 1
Set f = Sheets("Base de donnée")
Do While f.Cells(i, 1) <> ""
If Dico.Exists(Left(f.Cells(i, 1), 5)) Then f.Rows(i).Delete Else i = i + 1
Loop
End Sub
Dernière modification par BOISGONTIER ; 04/07/2009 à 09h03. |
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: janvier 2008
Messages: 318
|
Merci encore BOISGONTIER.
Maintenant, j'ai se probleme. Dans la rangé a de la feuille trie, comment faire en sorte que le chiffre indiqué, exemple 1530, devienne en format texte en 5 caracteres. ex: 1530 deviens 01530. s'il a déja 5 caracteres, ex 58350, il reste pareille. matrix |
|
|
|
|
|
#12 (permalink) | |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Localisation: Paris
Messages: 1 073
|
Bonjour à tous et à toutes
Citation:
Code:
=SI(CODE(STXT(A1;5;1))=32;"0";"")&A1 |
|
|
|
|
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Comment supprimer les cellules d'une ligne après saisi du N° de ligne | frichti | Forum Excel | 1 | 27/05/2008 14h47 |
| supprimer une ligne excel si le texte d'une cellule est en gras | sylv@in | Forum Excel | 3 | 27/05/2008 14h19 |
| supprimer 1 ligne sur 3 sous excel | Reno : supprimer 1 ligne sur 3 sous | Forum Excel | 4 | 24/11/2005 17h29 |
| macro excel pour supprimer ligne | Richard.RdA | Forum Excel | 2 | 02/08/2005 16h19 |
| Supprimer le contenu d'une ligne sans supprimer les formules | Kam7 | Forum Excel Downloads - Archives | 0 | 29/09/2003 17h15 |