Pour un besoin de routage, je dois mettre sur plusieurs colonne des cellules ayant un renvoi à la ligne automatique.
J'ai essayé la formule =GAUCHE(F5;TROUVE(CHAR(10);F5)-1) mais cela ne donne rien...
bonsoir à tous
à l’époque on avait une astuce pour ça
mais que veux tu à l'époque on avait pas PQ et tout ces fonctions que l'on a aujourd'hui
mais il y a du vba
et plus tard je l'ai converti en fonction perso
et encore aujourd'hui je suis pas sur que l'on fasse aussi bien
Alors attention c'est pas piqué des verts
tous ceux qui ne sortent jamais des clous et qui aident les vielles dames à traverser passez votre chemin en tournant la tète
alors tu ajoute un userform"userform1" dans ton fichier
dans ce userform tu va lui mettre un textbox "textbox1
et c'est tout pas de code... rien !!!!!
maintenant tu va dans un module standard et tu lui colle ce code
VB:
Function getArrayTextRow(cel As Range, index)
With UserForm1
With .TextBox1
.Width = cel.Width
.Height = cel.Width
.Font.Size = cel.Font.Size - 1
.Font.Bold = cel.Font.Bold
.Value = cel.Value & Application.Rept(vbCrLf, 100)
'UserForm1.Show 0'c'est pas la peine
For i = .LineCount - 1 To 1 Step -1
.CurLine = .LineCount - i
.SelText = vbCrLf ' en bloquant cette ligne on a le vrai nombre de saut de ligne
Next
t = Split(.Text, vbCrLf)
End With
UserForm1.Hide
getArrayTextRow = t(index - 1)
End With
End Function
exemple en A1 j'ai
allez c'est parti pour une petite formule
en D1 je met =getArrayTextRow(A$1;LIGNE(1:1)) et j’étends la formule vers le bas
et oui encore fois j'utilise un userform comme module classe ( coquine manie patricktoulonnesque)
et dans la fonction je paramètre
le textbox qui lui est un activX
je lui met le texte de la même manière que dans la cellule
et je je place les sauts de ligne en fonction en fin des curline dans une boucle à reculons
et voilà le tout sans même afficher le userform
LOL!
je t'avais prévenu c'est pas piqué des vers
seul les vieux roublards exceliens pourront comprendre
edit our les versions d'actuelles d'excel
je viens de tester sur 2021
donc
et si vos satanés versions actuelles d'excel vous fait des misères sans le show
VB:
Function getArrayTextRow(cel As Range, index)
With UserForm1
.Startupposition = 0
.Top = -100
With .TextBox1
.Width = cel.Width
.Height = cel.Width
.Font.Size = cel.Font.Size - 1
.Font.Bold = cel.Font.Bold
.Value = cel.Value & Application.Rept(vbCrLf, 100)
UserForm1.Show 0
For i = .LineCount - 1 To 1 Step -1
.CurLine = .LineCount - i
.SelText = vbCrLf ' en bloquant cette ligne on a le vrai nombre de saut de ligne
Next
t = Split(.Text, vbCrLf)
End With
UserForm1.Hide
getArrayTextRow = t(index - 1)
End With
Unload UserForm1
End Function