reconnaitre deux caractères dans une cellule

mousocgen

XLDnaute Nouveau
salut à tous
le défi du jour (des 2 derniers jours pour moi)
j'ai une macro qui doit reconnaitre des termes (DS, WC etc...) dans une colonne puis coller les lignes contenant ces termes.
Copier et coller les lignes qui contiennet uniquement le texte "DS"seul c'est ok pour moi.
Le problème c'est que des fois j'ai dans la colonne le texte "WC5659" ou encore "CA DS 07".
ce qu'il me manque dans ma condition IF c'est mettre "...DS..." pour expliquer
que ej veux les cellules qui contiennet DS entre autres.
d'ailleuirs j'ai un autre problème c'est que quand j'ai "EADS" il va peut être me le prendre ?
C'est un fichier que je dois construire rapidement et comme je débute en VBA je n'ai pas le temps de passer en revue toutes les aides etc...
Merci bcp
++
 

porcinet82

XLDnaute Barbatruc
Re : reconnaitre deux caractères dans une cellule

Salut,

Rapidement, je dirai que tu peux utiliser la fonction Instr qui permet de déterminer si un caractère ou une chaine existe dans une autre chaine.
Ca donnerai donc un truc dans ce genre :
Code:
If Not InStr(1, Cells(i, 1).Value, "DS") = 0 And Not Cells(i, 1).Value = "EADS" Then
   [COLOR=seagreen] 'ton code de copier/coller[/COLOR]
End If

Quelques explications sur Instr : Instr(Start,chaine dans laquelle tu recherches, chaine cherchée)

Voili, voilou,

@+
 

mousocgen

XLDnaute Nouveau
Re : reconnaitre deux caractères dans une cellule

salut ! merci d'avoir répondu
mais ça ne m'affiche toujrous rien dans mon onglet de résultats "warrants"

à mon avis ej dois mal renseigner la chaîne dans laquelle il doit chercher

Sub warrant2()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("warrants").Activate ' feuille de destination


Col = "E" ' colonne données non vides à tester'
NumLig = 1 'feuille destination : ligne où commence la copie

With Sheets("suspens") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 3 To NbrLig 'n° de la 1ere ligne de données'

If Not InStr(1, Cells(Lig, Col).Value, "DS") = 0 Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste

'.Cells(Lig, Col).Value = "DS07"
End If

Next

End With

End Sub


Merci encore de ton aide
++
 

Spitnolan08

XLDnaute Barbatruc
Re : reconnaitre deux caractères dans une cellule

Re,

Salut Porcinet:), j'ai été au plus court tout à l'heure...;)
C'est mon premier fil de la journée et ne sais si je vais en faire 2. Il faut que je me repose maintenant, même si je me suis économisé sur la réponse.:p

Bien cordialement
 

mousocgen

XLDnaute Nouveau
Re : reconnaitre deux caractères dans une cellule

salut spitlan.... ;-)

merci pour ta réponse comme quoi un petit point peut changer bcp

Mais (car il y a tjs un mais) je cherche à régler le problème des "DS" inopportuns

Exemple de DS que je vex filter : " DS 07", "DS07"
exemple de DS que je ne veux pas filtrer: "EADS, HANDS" etc..
eest-il possible de le faire ou bien faut-il lui dire de ne pas prendre en compte un par un les inopportuns ?

Merci encore
 

Spitnolan08

XLDnaute Barbatruc
Re : reconnaitre deux caractères dans une cellule

Re,

Ouh la la, je vais être épuisé...
Un essai, si les données ont la forme que j'espère. Pour des données en C1:C10
Code:
Sub azer2()
Dim a As String, b As String
Dim i As Long, Pos As Integer
For i = 1 To 10
Pos = InStr(1, Cells(i, "C").Value, "DS")
    If Not Pos = 0 Then
    a = Trim(Left(Cells(i, "C"), Pos - 1))
    b = Trim(Right(Cells(i, "C"), Len(Cells(i, "C")) - Pos - 1))
        If (a = "" Or IsNumeric(a)) And (b = "" Or IsNumeric(b)) Then Cells(i, "D").Value = "Copie autorisée"
    
    End If
Next
End Sub
Mais l'énoncé est beaucoup trop succint.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 836
Messages
2 092 655
Membres
105 479
dernier inscrit
chaussadas.renaud