XL 2019 Traitement chaines de caractères vba

chris4785478547

XLDnaute Junior
Bonsoir le fil,

A nouveau, Bonne Année à tous.
Je connais la syntaxe pour tronquer une chaine de caractères par la gauche (par exemple) à savoir:

VB:
 Left ("année",2)
qui renvoie: an
Mais peut on donner une variable à la place de la chaine explicite ?
Merci
 

Jacky67

XLDnaute Barbatruc
Bonsoir le fil,

A nouveau, Bonne Année à tous.
Je connais la syntaxe pour tronquer une chaine de caractères par la gauche (par exemple) à savoir:

VB:
 Left ("année",2)
qui renvoie: an
Mais peut on donner une variable à la place de la chaine explicite ?
Merci
Bonjour,
Essaye
VB:
Sub test()
    Dim MaVariable$
    MaVariable = "année"
    MsgBox Left(MaVariable, 2)
End Sub
Bonne Année
 

Staple1600

XLDnaute Barbatruc
Bonsoir lefil

Juste pour dissiper les dernières effluves du réveillon ;)
VB:
Sub test()
Dim chaine As String
chaine = "année"
MsgBox TireSur(chaine, 1, 2)
MsgBox TireSur(chaine, 4, 2)
End Sub
Function TireSur(MonString As String, Pos&, nCar)
TireSur = Mid(MonString, Pos, nCar)
End Function
;)
 

soan

XLDnaute Barbatruc
Inactif
@chris4785478547

lis d'abord mon post #4 précédent.

en PJ, un fichier exemple ; fais Ctrl e ➯ travail effectué

note bien que la 1ère ligne est inchangée ; ce n'est pas un bug :
c'est voulu, pour préserver une ligne d'en-têtes.

Alt F11 pour voir le code VBA, puis pour revenir sur Excel.


VB:
Sub Essai()
  Dim Tbl, n&: Application.ScreenUpdating = 0
  n = Cells(Rows.Count, 1).End(3).Row
  If n = 1 Then Exit Sub
  Dim chn$, i&: n = n - 1: Tbl = [A2].Resize(n)
  For i = 1 To n
    chn = Tbl(i, 1)
    If Len(chn) > 1 Then Tbl(i, 1) = RTrim$(Left$(Tbl(i, 1), 2))
  Next i
  [A2].Resize(n) = Tbl
End Sub



petite question subsidiaire : as-tu compris pourquoi
j'ai utilisé aussi RTrim$() ? ;)


soan
 

Pièces jointes

  • Exo chris4785.xlsm
    16 KB · Affichages: 6
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

=>chris
En attendant que mon thé refroidisse, je suis allé joué dans VBE ;)
VB:
Sub Extractions()
Dim mavariable As String, exemples(4)
mavariable = Application.UserName
exemples(0) = Left(mavariable, 2)
exemples(1) = Right(mavariable, 3)
exemples(2) = Mid(mavariable, 1, 4)
exemples(3) = Mid(StrReverse(mavariable), 1, 1)
[C1] = mavariable
[A1:A4] = Application.Transpose(exemples)
[C1].TextToColumns [A5], xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(1, 9))
End Sub
 

chris4785478547

XLDnaute Junior
Salut le fil,

Bonjour les gars, et merci pour vos réponses, j'avais bien essayé la syntaxe : MsgBox Left(MaVariable, 2)
Mais j'avais fait une grosse bêtise par ailleurs, (j'avais oublié le End Sub) Bon j'arrête de picoler

=>Je n'ai rien compris à ton petit exercice !
 

chris4785478547

XLDnaute Junior
Re

Salut Staple,
J'ai encore merdé. Ton message était très clair, merci. Et bien sûr, ça marche.
J'ai juste oublié de mettre Soan en destinataire c'est son exercice que je n'ai pas compris.
Il faut que je m'achète une conduite, plus ça va et plus je manque de rigueur.
 

chris4785478547

XLDnaute Junior
Re
=>Soan

Ton message #4 était très clair, et j'aurais aussi bien pu le classer "solution" que le post de Jacky.
Non c'est ton message #5 que je ne comprends pas bien, il semble que tu m'aies adressé un exercice mais je ne vois pas en quoi cela consiste ... et puis j'ai regardé ton code vba qui est assez complexe. Je vais prendre le temps de l'étudier afin de te poser des questions très prochainement...Merci en tout cas
 

soan

XLDnaute Barbatruc
Inactif
@chris4785478547

exercice de mon post #5 : ce sont des phrases en colonne A ; pour toutes les phrases,
la macro prend uniquement les 2 premiers caractères de la cellule A, sauf pour la
1ère ligne d'en-têtes ; reste l'énigme que j'ai posée : pourquoi j'ai utilisé RTrim$() ?

nota bene : j'ai mis cet exo surtout pour te montrer un exemple de traitement sur plusieurs lignes.


soan
 

Discussions similaires

Statistiques des forums

Discussions
312 270
Messages
2 086 681
Membres
103 370
dernier inscrit
pasval