A voir également:
- VB excel scinder chaine de caractere en 2
- Caractère ascii - Guide
- Liste déroulante excel - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Mise en forme conditionnelle excel - Guide
5 réponses
salut
Insère un module VBA dans ton classeur et colles-y la fonction ci-dessous
ta nouvelle fonction Jusqua demande DEUX paramètres :
- en premier une chaine de caractères à "couper" en deux
- en second une taille maxi de chaine à en extraire
la fonction va alors prendre la partie gauche du texte reçu, en extraire les <taillemax> caractères du début
puis va la réduire jusqu'à trouver un espace. la chaine renvoyée sera alors te texte correctement (enfin presque) coupé.
comment tu vas l'utiliser :
en A2 il y a "CONVOYEUR DE CAPTAGE D'ALIMENTATION À L'EXTRACTION"
en B2, tu mets =JUSQUA(A2;35) => ça t'affiche CONVOYEUR DE CAPTAGE (avec l'espace final)
en C2 tu mets =STXT(A2; NBCAR(B2) + 1;10000) => ça t'affiche D'ALIMENTATION À L'EXTRACTION
Insère un module VBA dans ton classeur et colles-y la fonction ci-dessous
Function Jusqua(chaine, taillemax) Dim s If (Len(chaine) < taillemax) Or (Len(chaine) = 0) Then Jusqua = chaine ' rien à faire si chaine vide ou inférieure à taillemax Else s = Left(chaine, taillemax) ' couper la chaine à taillemax car While (s <> "") And (Right(s, 1) <> " ") ' tant qu'on a pas un espace s = Left(s, Len(s) - 1) ' enlever le car final Wend If s = "" Then Jusqua = chaine ' si le résultat est vide, renvoyer la chaine recue Else Jusqua = s ' sinon renvoyer ce qui a été trouvé (avec l'espace final) End If End If End Function
ta nouvelle fonction Jusqua demande DEUX paramètres :
- en premier une chaine de caractères à "couper" en deux
- en second une taille maxi de chaine à en extraire
la fonction va alors prendre la partie gauche du texte reçu, en extraire les <taillemax> caractères du début
puis va la réduire jusqu'à trouver un espace. la chaine renvoyée sera alors te texte correctement (enfin presque) coupé.
comment tu vas l'utiliser :
en A2 il y a "CONVOYEUR DE CAPTAGE D'ALIMENTATION À L'EXTRACTION"
en B2, tu mets =JUSQUA(A2;35) => ça t'affiche CONVOYEUR DE CAPTAGE (avec l'espace final)
en C2 tu mets =STXT(A2; NBCAR(B2) + 1;10000) => ça t'affiche D'ALIMENTATION À L'EXTRACTION
Es-ce que je peu inserer ca avec mon code qui insere la description:
Case TITRE1_TAG
GetAttributeValue = UCase(chargesWrkbook.Sheets(1).Cells(Row, DESC_COLUMN).Text)
et la 2ieme partie se retrouverais dans TITRE2_TAG
Case TITRE1_TAG
GetAttributeValue = UCase(chargesWrkbook.Sheets(1).Cells(Row, DESC_COLUMN).Text)
et la 2ieme partie se retrouverais dans TITRE2_TAG
Je vais rien te conseiller du tout si ce n'est que de rester simple.
Pense donc à la maintenance qui sera nécessaire dans quelques semaines, quelques mois voire quelques années.
Pense donc à la maintenance qui sera nécessaire dans quelques semaines, quelques mois voire quelques années.
Il n'y a pas de maintenance à fare. Une fois mes dessins générer (1000 environ) je n'ai plus a les refaires. et si je voudrait l'utiliser dans quelques mois la cartouche reste la même
ce que je voudrait faire cest que dans :
Case TITRE1_TAG
GetAttributeValue = UCase(chargesWrkbook.Sheets(1).Cells(Row, DESC_COLUMN).Text)
si Cells(Row, DESC_COLUMN) est plus grand que 35 caractere que je le séparer en 2 et ecrire le restant dans un autre attribu qui est TITRE2_TAG
ce que je voudrait faire cest que dans :
Case TITRE1_TAG
GetAttributeValue = UCase(chargesWrkbook.Sheets(1).Cells(Row, DESC_COLUMN).Text)
si Cells(Row, DESC_COLUMN) est plus grand que 35 caractere que je le séparer en 2 et ecrire le restant dans un autre attribu qui est TITRE2_TAG
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Évidemment,
Jai utilisé ta routine voici le résultat:
Case TITRE1_TAG
CHAINE = UCase(chargesWrkbook.Sheets(1).Cells(Row, DESC_COLUMN))
DEP_PARTIE2 = 35
If (Len(CHAINE) < 35) Or (Len(CHAINE) = 0) Then
COUPE1 = CHAINE ' rien à faire si chaine vide ou inférieure à 35
Else
PARTIE1 = Left(CHAINE, 35) ' couper la chaine à 35 car
While (PARTIE1 <> "") And (Right(PARTIE1, 1) <> " ") ' tant qu'on a pas un espace
PARTIE1 = Left(PARTIE1, Len(PARTIE1) - 1) ' enlever le car final
DEP_PARTIE2 = DEP_PARTIE2 - 1
Wend
If PARTIE1 = "" Then
COUPE1 = CHAINE ' si le résultat est vide, renvoyer la chaine recue
Else
COUPE = PARTIE1 ' sinon renvoyer ce qui a été trouvé (avec l'espace final)
End If
PARTIE2 = LTrim(Mid(CHAINE, DEP_PARTIE2)) 'ENLEVE L'ESPACE DU DEBUT
GetAttributeValue = PARTIE1
End If
Jai utilisé ta routine voici le résultat:
Case TITRE1_TAG
CHAINE = UCase(chargesWrkbook.Sheets(1).Cells(Row, DESC_COLUMN))
DEP_PARTIE2 = 35
If (Len(CHAINE) < 35) Or (Len(CHAINE) = 0) Then
COUPE1 = CHAINE ' rien à faire si chaine vide ou inférieure à 35
Else
PARTIE1 = Left(CHAINE, 35) ' couper la chaine à 35 car
While (PARTIE1 <> "") And (Right(PARTIE1, 1) <> " ") ' tant qu'on a pas un espace
PARTIE1 = Left(PARTIE1, Len(PARTIE1) - 1) ' enlever le car final
DEP_PARTIE2 = DEP_PARTIE2 - 1
Wend
If PARTIE1 = "" Then
COUPE1 = CHAINE ' si le résultat est vide, renvoyer la chaine recue
Else
COUPE = PARTIE1 ' sinon renvoyer ce qui a été trouvé (avec l'espace final)
End If
PARTIE2 = LTrim(Mid(CHAINE, DEP_PARTIE2)) 'ENLEVE L'ESPACE DU DEBUT
GetAttributeValue = PARTIE1
End If