recherche de chaine de caractere...

romainchu78

XLDnaute Occasionnel
Bonjour a tous et joyeuse fete de noel,

J'ai une liste de produits range par lignes, chaque produit contient plusieurs caracteristiques classe par colonne.
Maintenant je voudrais effectuer une recherche avec un balayage par ligne puis par colonne de maniere a localiser des lignes (donc les produits) ne contenant pas les chaines de caracteres pre-definis.

Par exemple en ligne 520 il n'y a pas la presence d'aucunes des chaines de caracteres pre-definis, donc la macro efface la ligne.

les chaines de caracteres pre-definis sont des mots qui peuvent etre integre au sein de chaines de caracteres, il faudrait que le fonction de recherche soit capable de les localiser quant meme.
Par exemple: chaines de caracteres pre-definis "2024", "6061".
dans la cellule B653 il y a: "GJ4-2024 ke" il vera alors que la ligne 653 ne sera pas effacer car il y a au moins "2024".
les chaines de caracteres pre-definis peuvent etre dans une des colonnes C a F.

La liste produits peux contenir jusqu'a 7000 produits (donc lignes) donc un code optimiser serait l'ideale. si possible bien sur.
je met un exemple en piece jointe pour etre encore plus precis.

merci et bonne journee,
Romain
 

Pièces jointes

  • Romainchu78.xls
    18 KB · Affichages: 58
  • Romainchu78.xls
    18 KB · Affichages: 63
  • Romainchu78.xls
    18 KB · Affichages: 64

Pyrof

XLDnaute Occasionnel
Re : recherche de chaine de caractere...

Bonjour,

Voici une ébauche :

Sub pyrof()
chaine1 = "2024"
chaine2 = "5056"
chaine3 = "6061"
ligne = 2
While Cells(ligne, 1) <> ""
texte = ""
' cumul des colonnes de la ligne
For b = 1 To 7 'nombre de colonne
texte = texte & "|" & Cells(ligne, b) ' (*)
Next
ya = 0
ya = ya + InStr(texte, chaine1)
ya = ya + InStr(texte, chaine2)
ya = ya + InStr(texte, chaine3)
If ya <> 3 Then MsgBox "la ligne " & ligne & " est à effecer"
texte = Cells(ligne, 1)
ligne = ligne + 1
Wend

End Sub


(*) "|" pour bien séparer le texte des différentes colonnes
 

Pyrof

XLDnaute Occasionnel
Re : recherche de chaine de caractere...

j'ai fait une erreur

nouvelle version
Sub pyrof()
chaine1 = "2024"
chaine2 = "5056"
chaine3 = "6061"
ligne = 2
While Cells(ligne, 1) <> ""
texte = ""
' cumul des colonnes de la ligne
For b = 1 To 7 'nombre de colonne
texte = texte & "|" & Cells(ligne, b)
Next
ya = 0
If InStr(texte, chaine1) > 0 Then ya = ya + 1
If InStr(texte, chaine2) > 0 Then ya = ya + 1
If InStr(texte, chaine3) > 0 Then ya = ya + 1
If ya <> 3 Then MsgBox "la ligne " & ligne & " est à effecer"
texte = Cells(ligne, 1)
ligne = ligne + 1
Wend

End Sub
 

Krut

XLDnaute Nouveau
Re : recherche de chaine de caractere...

Bonjour,

J'ai bien regardé le fichier Excel et voici ce que je propose :

Private Sub CommandButton1_Click()
Dim temp0, temp1, temp2, LigMax As Integer
Dim MyStr As String
Dim StrPredefini(2)
Dim test As Boolean

StrPredefini(0) = "2024"
StrPredefini(1) = "6061"
StrPredefini(2) = "5056"
i = 2
Do
test = True
For j = 1 To 7
MyStr = Cells(i, j).Value
temp0 = InStr(1, MyStr, StrPredefini(0), 0)
temp1 = InStr(1, MyStr, StrPredefini(1), 0)
temp2 = InStr(1, MyStr, StrPredefini(2), 0)
If (temp0 <> 0 Or temp1 <> 0 Or temp2 <> 0) Then test = False
Next j
If test Then
Cells(i, j).EntireRow.Delete
i = i
Else
i = i + 1
End If
Loop Until Cells(i, 1).Value = ""
End Sub


Attention, cela suppose que la première colonne soit toujours remplie pour prendre en compte l'ensemble des données...

J'espère que cela ira.

Krut
 

Discussions similaires

Statistiques des forums

Discussions
312 689
Messages
2 090 973
Membres
104 717
dernier inscrit
volotruc