Extraire un morceau de texte et le verifier

Fermé
JEROME02290 - 31 mars 2011 à 08:21
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 31 mars 2011 à 10:36
Bonjour,

Je n'arrive pas à trouver la Macro EXCEL, qui me permettrait de :

Je dois lire une liste de NOM qui pour certain finissent par "(S)". ex : DURAND (S)
Si je trouve (S), je veux copier le NOM complet vers une autre cellule.

Merci pour votre Aide
JEROME


A voir également:

3 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
31 mars 2011 à 08:30
Bonjour

a tout hasard:
Peut être créer une liste avec uniquement les noms qui se terminent par S sans macro
la liste en A
en B1=SI(DROITE(A1)="s";A1;"")
il suffit ensuite de faire un copier coller valeur et de trier pour avoir la liste

ou pour créer une liste continue, à adapter:
en colonne B, à partir de B2, B1 devant être vide:
=SI(DROITE(A1)="s";MAX($B$1:B1)+1;0)
en colonne C, en C2:
=SI(LIGNE()-1>MAX(B:B);"";INDEX($A$2:$A$1000;EQUIV(LIGNE()-1;$A$1:$A$1000;0);1))

crdlmnt



0
JEROME02290
31 mars 2011 à 09:12
Avant tout merci de vous intéresser à mon Problème.

Cela doit impérativement intégrer une Macro existante de quelques 3000-4000 Lignes.
C'est une fonction d'affichage de personnel que je dois mettre en place en plus de notre programme existant.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
31 mars 2011 à 09:49
Bonjour à tous

1/ Cela doit impérativement intégrer une Macro existante
tu peux nous en dire plus ?
0
ccm81 Messages postés 10906 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 13 janvier 2025 2 429
Modifié par ccm81 le 31/03/2011 à 10:10
bonjour à tous

peut être quelque chose comme ça pour recopier dans la colonne suivante

Private Sub CommandButton1_Click() 
Const lideb = 1 
Const lifin = 16 
Const co = 5 
Dim li As Long 
For li = lideb To lifin 
  If Right(Cells(li, co).Value, 3) = "(S)" Then 
    Cells(li, co).Offset(0, 1).Value = Cells(li, co).Value 
  End If 
Next li 
End Sub


bonne suite
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
31 mars 2011 à 10:36
bonjour ccm

peut-^tre + rapide sur 4000 lignes et liste des (s) groupée bien qu'une solution sans macro semblerait largement facile et suffisante... mais une macro est impérative, qu'il a dit, Jérome :-)

Const lig As Byte = 1 'ligne départ
Const col As Byte = 1 'colonne à traiter
Const cible As String = "B2" ' départ cellules de restitution

Sub essai()
Dim cptr As Integer, cptr_s As Integer
Dim T_s, Nbre_s

ReDim T_s(0) As String
With Sheets(1)
    derlig = .Cells(.Rows.Count, col).End(xlUp).Row
For cptr = 0 To derlig
    Nbre_s = Split(.Cells(cptr + lig, col), "(")
    If UBound(Nbre_s) > 0 Then
        ReDim Preserve T_s(cptr_s)
        T_s(cptr_s) = Trim(Nbre_s(0))
        cptr_s = cptr_s + 1
    End If
Next
End With

Application.ScreenUpdating = False
Sheets(2).Range(cible).Resize(cptr_s, 1) = Application.Transpose(T_s)
End Sub
0