Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajouter des 0 dans une string

10 réponses
Avatar
Christine Imbeault
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n’a pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine

10 réponses

Avatar
MichDenis
Bonjour Christine,

Une fonction personnalisée dans un module standard:

Function ADD_ZERO(rg As Range)
Dim P As Variant, A As String
A = Left(rg, 6)
P = Split(Right(rg, Len(rg) - 6), "/")
ADD_ZERO = A & Application.Rept("0", 3 _
- Len(P(0))) & Join(P, "/")
End Function

Et dans la cellule de ton choix :
­D_ZERO(A1)



"Christine Imbeault" a écrit dans le message
de groupe de discussion :
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n’a pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine
Avatar
garnote
Bonsoir Christine,

À partir de ta feuille de calcul :
1) Tape Alt+F11
2) Clique sur Insertion / Module
3) Colle cette macro dans la feuille vierge qui devrait apparaÏtre.

Function zéro(t As Range)
inv = StrReverse(t.Value)
p1 = InStr(1, inv, "/")
p2 = InStr(1, inv, "-")
x = Mid(inv, p1 + 1, p2 - p1 - 1)
If Len(x) = 1 Then x = x & "00"
If Len(x) = 2 Then x = x & "0"
nt = Left(inv, p1) & x & Mid(inv, p2)
zéro = StrReverse(nt)
End Function

Et si ton texte est en A1, entre la formule =zéro(A1)
dans une cellule quelconque de ta feuille.
* La fonction SrtReverse est disponible depuis la version 2000.

Serge



"Christine Imbeault" a écrit
dans le message de news:

Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine



Avatar
Philippe.R
Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n’a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine



Avatar
garnote
Wow ! :-)

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a pas
3 caractères après le dernier tiret.
J'ai voulu généraliser mais peut-être inutilement.

Par exemple :
oP-1545-uio-123-1/12
devient
oP-1545-uio-123-001/12

Serge


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine






Avatar
MichDenis
Il y a aussi ceci : Adapter A8 pour la cellule désirée

=GAUCHE(A8;6)&REPT(0;4-CHERCHE("/";SUBSTITUE(A8;GAUCHE(A8;6);"")))&SUBSTITUE(A8;GAUCHE(A8;6);"")



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de groupe de discussion
:
Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n’a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine



Avatar
Philippe.R
Bonsoir Denis,
Efficace !
Je propose un poil plus court :
=GAUCHE(F2;6)&REPT(0;4-TROUVE("/";SUBSTITUE(F2;GAUCHE(F2;6);"")))&SUBSTITUE(F2;GAUCHE(F2;6);"")
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"MichDenis" a écrit dans le message de
news:
Il y a aussi ceci : Adapter A8 pour la cellule désirée

=GAUCHE(A8;6)&REPT(0;4-CHERCHE("/";SUBSTITUE(A8;GAUCHE(A8;6);"")))&SUBSTITUE(A8;GAUCHE(A8;6);"")



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
groupe de discussion
:
Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n’a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine






Avatar
Philippe.R
Bonsoir Serge,
Là, c'est sur, la fonction se met à genoux et demande pardon !
Mais ce n'est pas la structure de l'énoncé de base !
;o))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"garnote" a écrit dans le message de
news:
Wow ! :-)

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a
pas
3 caractères après le dernier tiret.
J'ai voulu généraliser mais peut-être inutilement.

Par exemple :
oP-1545-uio-123-1/12
devient
oP-1545-uio-123-001/12

Serge


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a
écrit dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut
ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine










Avatar
MichDenis
Tu aurais pu faire encore un effort supplémentaire et soustraire encore quelques
caractères en moins ;-)
=GAUCHE(A9;6)&REPT(0;4-TROUVE("/";SUBSTITUE(A9;GAUCHE(A9;6);)))&SUBSTITUE(A9;GAUCHE(A9;6);)



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de groupe de discussion
:
Bonsoir Denis,
Efficace !
Je propose un poil plus court :
=GAUCHE(F2;6)&REPT(0;4-TROUVE("/";SUBSTITUE(F2;GAUCHE(F2;6);"")))&SUBSTITUE(F2;GAUCHE(F2;6);"")
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"MichDenis" a écrit dans le message de
news:
Il y a aussi ceci : Adapter A8 pour la cellule désirée

=GAUCHE(A8;6)&REPT(0;4-CHERCHE("/";SUBSTITUE(A8;GAUCHE(A8;6);"")))&SUBSTITUE(A8;GAUCHE(A8;6);"")



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
groupe de discussion
:
Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n’a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine






Avatar
Sam
Bonjour, en fonction du format des données (le - toujours 6eme position, le
nb de caractères finaux constant et égal à 11), on pourrait aussi avoir
=GAUCHE(A9;6)&REPT(0;11-NBCAR(A9))&DROITE(A9;NBCAR(A9)-6)
Cordialement
Michel dit "Sam"

"MichDenis" a écrit dans le message de news:

Tu aurais pu faire encore un effort supplémentaire et soustraire encore
quelques
caractères en moins ;-)
=GAUCHE(A9;6)&REPT(0;4-TROUVE("/";SUBSTITUE(A9;GAUCHE(A9;6);)))&SUBSTITUE(A9;GAUCHE(A9;6);)



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
groupe de discussion
:
Bonsoir Denis,
Efficace !
Je propose un poil plus court :
=GAUCHE(F2;6)&REPT(0;4-TROUVE("/";SUBSTITUE(F2;GAUCHE(F2;6);"")))&SUBSTITUE(F2;GAUCHE(F2;6);"")
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"MichDenis" a écrit dans le message de
news:
Il y a aussi ceci : Adapter A8 pour la cellule désirée

=GAUCHE(A8;6)&REPT(0;4-CHERCHE("/";SUBSTITUE(A8;GAUCHE(A8;6);"")))&SUBSTITUE(A8;GAUCHE(A8;6);"")



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
groupe de discussion
:
Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a
écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut
ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine









Avatar
Philippe.R
Bonjour,
Zoli ;o))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Sam" a écrit dans le message de
news:4a1eeffd$0$17763$

Bonjour, en fonction du format des données (le - toujours 6eme position,
le nb de caractères finaux constant et égal à 11), on pourrait aussi avoir
=GAUCHE(A9;6)&REPT(0;11-NBCAR(A9))&DROITE(A9;NBCAR(A9)-6)
Cordialement
Michel dit "Sam"

"MichDenis" a écrit dans le message de news:

Tu aurais pu faire encore un effort supplémentaire et soustraire encore
quelques
caractères en moins ;-)
=GAUCHE(A9;6)&REPT(0;4-TROUVE("/";SUBSTITUE(A9;GAUCHE(A9;6);)))&SUBSTITUE(A9;GAUCHE(A9;6);)



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
groupe de discussion
:
Bonsoir Denis,
Efficace !
Je propose un poil plus court :
=GAUCHE(F2;6)&REPT(0;4-TROUVE("/";SUBSTITUE(F2;GAUCHE(F2;6);"")))&SUBSTITUE(F2;GAUCHE(F2;6);"")
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"MichDenis" a écrit dans le message de
news:
Il y a aussi ceci : Adapter A8 pour la cellule désirée

=GAUCHE(A8;6)&REPT(0;4-CHERCHE("/";SUBSTITUE(A8;GAUCHE(A8;6);"")))&SUBSTITUE(A8;GAUCHE(A8;6);"")



"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
groupe de discussion
:
Bonjour,
Avec les fonctions de base d'Excel et la chaîne à modifier en F2 :

=GAUCHE(F2;TROUVE("-";F2;TROUVE("-";F2;1)+1))&REPT(0;4-(TROUVE("/";F2;1)-TROUVE("-";F2;TROUVE("-";F2;1)+1)))&DROITE(F2;NBCAR(F2)-TROUVE("-";F2;TROUVE("-";F2;1)+1))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Christine Imbeault" a
écrit
dans le message de
news:
Bonjour à tous,

Des 0 doivents être ajoutés lorsque la dernière partie de ma string n'a
pas
3 caractères après le dernier tiret. Si le 1 cas arrive, il faut
ajouter
deux 0. Si le deuxième cas arrive, il faut ajouter deux 0. Si le 3e
cas
arrive, il faut ajouter aucun 0. Est-ce que je peux faire cet exercice
avec
des fonctions.

1e cas : P-546-1/1 Résultat ajouter deux 0 en avant du 1:
P-546-001/1
2e cas : P-630-16/1 Résultat ajouter un 0 en avant du 16:
P-546-016/1
2e cas : P-546-165/1 Résultat ajouter aucun 0 en avant du 165:
P-546-165/1

Merci de votre précieuse aide
Christine