Microsoft 365 Extraire d’une chaîne, un texte qui se trouve entre guillemets.

Chasse

XLDnaute Occasionnel
Bonsoir le forum

j'aimerais extraire le mot "SVK" qui se trouve entre les guillemets et coller dans la colonne suivante
Petra Vlhova (SVK) = chaine
Ensuite supprimer les guillemets avec le mot. ne garder que "Petra Vlhova"

avec les formules j' y arrive

=STXT(D2;TROUVE("(";D2)+1;TROUVE(")";D2)-TROUVE("(";D2)-1)
=GAUCHE(D2; CHERCHE("("; D2) -1)

Mais avec ce code je bloque.




VB:
Sub www()

col = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
If Range("e2") = "" Then: une: Exit Sub

 Set ski = Cells(2, col).Offset(0, 2)
ski.Select

 For c = 2 To 30 '?????
         If Cells(c, col) = "" Then: Exit For
 Essa = Split(Cells(c, col), "(")
   avan = Essa(1)
 
Cells(c, col + 1) = avan
Next
End Sub

Merci de m'aider
 

Pièces jointes

  • Essai.xlsm
    22.1 KB · Affichages: 10

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Chasse,
Essayez peut-être :
Code:
Sub www()
Dim col&, i&, t
   If Range("e2") = "" Then une: Exit Sub
   col = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
   For i = 2 To Cells(Rows.Count, col).End(xlUp).Row
      t = Split(Cells(i, col), "(")
      If UBound(t) > 0 Then
         Cells(i, col + 1) = Replace(t(1), ")", "")
         Cells(i, col) = Trim(t(0))
      End If
   Next
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
peux tu m'expliquer ces 3 variantes Dim col&, i&, t
J'ai pour habitude de toujours déclarer le type des variables utilisées.
  • col est un numéro de colonne que je déclare comme entier (relatif en fait) de type Long
  • i est un numéro de ligne que je déclare comme entier (relatif en fait) de type Long
  • t est déclaré comme type Variant
Je devrais écrire : Dim col as long, i as long, t as Variant

En VBA, le suffixe pour Long est le caractère &. En VBA, une variable déclarée sans type est implicitement de type Variant. l'écriture se simplifie en : Dim col&, i&, t

Un petit résumé:
1615846769937.png
 
Dernière édition:

Chasse

XLDnaute Occasionnel
J'ai pour habitude de toujours déclarer le type des variables utilisées.
  • col est un numéro de colonne que je déclare comme entier (relatif en fait) de type Long
  • i est un numéro de ligne que je déclare comme entier (relatif en fait) de type Long
  • t est déclaré comme type Variant
Je devrais écrire : Dim col as long, i as long, t as Variant

En VBA, le suffixe pour Long est le caractère &. En VBA, une variable déclarée sans type est implicitement de type Variant. l'écriture se simplifie en : Dim col&, i&, t
Merci pour ses explications
je vais essayer d'en faire bon usage
 

Phil69970

XLDnaute Barbatruc
Bonsoir @Chasse, mapomme, le forum

Voici ma proposition :

VB:
Sub www()
Dim Derlig&, col&, c&
Dim InitPays, InitNom

Derlig = Worksheets("Slalom").Range("K" & Rows.Count).End(xlUp).Row

col = Cells(2, Cells.Columns.Count).End(xlToLeft).Column 'cpte les colonnes
If Range("e2") = "" Then: une: Exit Sub

Set ski = Cells(2, col).Offset(0, 2)
ski.Select

For c = 2 To Derlig
    InitNom = Cells(c, col)
    InitPays = Cells(c, col)
    InitNom = Left(InitNom, Len(InitNom) - 6)
    Cells(c, col + 1).Value = InitNom
    InitPays = Right(InitPays, 4)
    InitPays = Left(InitPays, Len(InitPays) - 1)
    Cells(c, col + 2).Value = InitPays
Next

End Sub

@Phil69970
 
Dernière édition:

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400