Extraire un morceau de texte et le verifier

JEROME02290 -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. JEROME02290
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour à tous

      1/ Cela doit impérativement intégrer une Macro existante
      tu peux nous en dire plus ?
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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