Code VBA pour supprime une partie de texte
Fermé
DrigoNL
-
22 janv. 2016 à 15:39
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 25 janv. 2016 à 15:24
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 25 janv. 2016 à 15:24
A voir également:
- Code VBA pour supprime une partie de texte
- Recuperer message whatsapp supprimé - Guide
- Code ascii de a - Guide
- Supprimer une page word - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
5 réponses
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
22 janv. 2016 à 15:51
22 janv. 2016 à 15:51
Bonjour
Poue éliminer les n=6 dernies caractères de la chaine s
n = 6
s = Left(s, Len(s) - n)
Cdlmnt
Poue éliminer les n=6 dernies caractères de la chaine s
n = 6
s = Left(s, Len(s) - n)
Cdlmnt
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
22 janv. 2016 à 16:12
22 janv. 2016 à 16:12
Peut être ceci (ce que j'ai compris)
Cdlmnt
Public Function Nettoie(s As String, n As Long) As String
Dim ss As String, r As Long
n = 6
ss = StrReverse(s)
r = InStr(1, ss, "-")
If r <> 0 And r = n Then s = Left(s, Len(s) - n)
Nettoie = s
End Function
Cdlmnt
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
22 janv. 2016 à 17:06
22 janv. 2016 à 17:06
Bonjour à tous,
autre proposition :
eric
autre proposition :
Sub suppVersion() Dim datas, lig As Long, tmp1, tmp2 Dim i As Long datas = [A2].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).Value For lig = 1 To UBound(datas) tmp1 = Split(datas(lig, 1), ",") For i = 0 To UBound(tmp1) tmp2 = Split(tmp1(i), "-") If tmp2(UBound(tmp2)) Like "##.##" Then ReDim Preserve tmp2(UBound(tmp2) - 1) tmp1(i) = Join(tmp2, "-") Next i datas(lig, 1) = Join(tmp1, ",") Next lig [A2].Resize(UBound(datas)) = datas End Sub
eric
Bonjour Eriiic,
Merci pour le code, le souci est que j'ai une erreur à la ligne suivante :
" datas(lig, 1) = Join(tmp1, ",")
Pourquoi il y a une virgule?? Parce que mes données sont en colonnes non separées par de virgule. C'est qui veut dire :
Je te joint le fichier excel suivant (voir la colonne B) : http://www.cjoint.com/c/FAzjavU1ZZj
colonne B
3% Pn/h-01.01
A&K-CYCLADES-01.03
XENON-0D-20.00
ADELE
.
.
.
.
etc.
Cordialement.
Merci pour le code, le souci est que j'ai une erreur à la ligne suivante :
" datas(lig, 1) = Join(tmp1, ",")
Pourquoi il y a une virgule?? Parce que mes données sont en colonnes non separées par de virgule. C'est qui veut dire :
Je te joint le fichier excel suivant (voir la colonne B) : http://www.cjoint.com/c/FAzjavU1ZZj
colonne B
3% Pn/h-01.01
A&K-CYCLADES-01.03
XENON-0D-20.00
ADELE
.
.
.
.
etc.
Cordialement.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
25 janv. 2016 à 10:28
25 janv. 2016 à 10:28
Bonjour,
avec ton explication j'avais compris que tu en avais plusieurs dans une cellule séparés par des ",".
Mais qui peut le plus peut le moins, et pas d'erreur chez moi.
https://www.cjoint.com/c/FAzjCn8nSzl
J'ai mis aussi la fonction de ccm81 qui est ok
eric
avec ton explication j'avais compris que tu en avais plusieurs dans une cellule séparés par des ",".
Mais qui peut le plus peut le moins, et pas d'erreur chez moi.
https://www.cjoint.com/c/FAzjCn8nSzl
J'ai mis aussi la fonction de ccm81 qui est ok
eric
Ré,
Quand j'essaie d'adapter le code avec mon fichier original, il me met une erreur dans la fonction "UBound" comme erreur de compilation : Tableau attendu.
Workbooks(nomcible).Activate
Workbooks(nomcible).Sheets("CNPE").Select
datas = Sheets("CNPE").Cells(Columns(2).Cells.Count, 3).End(xlUp).Row '[B3].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).Value
For lig1 = 3 To UBound(datas)
tmp1 = Split(datas(lig, 1), ",")
For i = 0 To UBound(tmp1)
tmp2 = Split(tmp1(i), "-")
If tmp2(UBound(tmp2)) Like "##.##" Then
ReDim Preserve tmp2(UBound(tmp2) - 1)
tmp1(i) = Join(tmp2, "-")
Next i
datas(lig1, 1) = Join(tmp1, ",")
Next lig1
[B3].Resize(Bond(datas)) = datas
Cdlt.
Quand j'essaie d'adapter le code avec mon fichier original, il me met une erreur dans la fonction "UBound" comme erreur de compilation : Tableau attendu.
Workbooks(nomcible).Activate
Workbooks(nomcible).Sheets("CNPE").Select
datas = Sheets("CNPE").Cells(Columns(2).Cells.Count, 3).End(xlUp).Row '[B3].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).Value
For lig1 = 3 To UBound(datas)
tmp1 = Split(datas(lig, 1), ",")
For i = 0 To UBound(tmp1)
tmp2 = Split(tmp1(i), "-")
If tmp2(UBound(tmp2)) Like "##.##" Then
ReDim Preserve tmp2(UBound(tmp2) - 1)
tmp1(i) = Join(tmp2, "-")
Next i
datas(lig1, 1) = Join(tmp1, ",")
Next lig1
[B3].Resize(Bond(datas)) = datas
Cdlt.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
25 janv. 2016 à 12:11
25 janv. 2016 à 12:11
Tu as des icones pour mettre en forme ton code : icone "<>"
Et je ne reconnais pas tout mon code. Si tu remplaces en mettant n'importe quoi ça marche moins bien forcément.
eric
Et je ne reconnais pas tout mon code. Si tu remplaces en mettant n'importe quoi ça marche moins bien forcément.
eric
Ré, je n'ai pas changé grande chose : juste active ma feuille ma feuille feuille et donnée au variable datas = la taille de mes données.
<Workbooks(nomcible).Activate >
<Workbooks(nomcible).Sheets("CNPE").Select >
<datas = Sheets("CNPE").Cells(Columns(2).Cells.Count, 3).End(xlUp).Row> '[B3].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).Value
<For lig = 3 To UBound(datas) >
<tmp1 = Split(datas(lig, 1), ",")>
<For i = 0 To UBound(tmp1) >
<tmp2 = Split(tmp1(i), "-") >
<If tmp2(UBound(tmp2)) Like "##.##" Then >
<ReDim Preserve tmp2(UBound(tmp2) - 1)>
<tmp1(i) = Join(tmp2, "-")>
<Next i >
<datas(lig, 1) = Join(tmp1, ",") >
<Next lig >
<[B3].Resize(Bond(datas)) = datas>
>
<Workbooks(nomcible).Activate >
<Workbooks(nomcible).Sheets("CNPE").Select >
<datas = Sheets("CNPE").Cells(Columns(2).Cells.Count, 3).End(xlUp).Row> '[B3].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).Value
<For lig = 3 To UBound(datas) >
<tmp1 = Split(datas(lig, 1), ",")>
<For i = 0 To UBound(tmp1) >
<tmp2 = Split(tmp1(i), "-") >
<If tmp2(UBound(tmp2)) Like "##.##" Then >
<ReDim Preserve tmp2(UBound(tmp2) - 1)>
<tmp1(i) = Join(tmp2, "-")>
<Next i >
<datas(lig, 1) = Join(tmp1, ",") >
<Next lig >
<[B3].Resize(Bond(datas)) = datas>
>
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
25 janv. 2016 à 13:58
25 janv. 2016 à 13:58
Bonjour
Je ne vois pas où est le problème
http://www.cjoint.com/c/FAzmOENgAqI
RQ. La proposition d'eric (salut à toi au passage) doit être un peu plus rapide que la mienne.
Cdlmnt
Je ne vois pas où est le problème
http://www.cjoint.com/c/FAzmOENgAqI
RQ. La proposition d'eric (salut à toi au passage) doit être un peu plus rapide que la mienne.
Cdlmnt
Bonjour ccm81,
Je souhaiterai adapter le code avec mon fichier original. Il est trop lourd parce qu'il a déjà pas mal de code derrière. Je vous explique un peu : l'idée était décroiser deux fichiersafin de créer un troisème. A la fin de ce dernier, il faut supprimer les versions.
le code d'Eric, c'est la fonction Ubound qui pose un problème car il ne trouve pas le tableau attendu. 1ier problème erreur :
<code></For lig = 1 To UBound(datas) >
Le 2iè est que si je crée un nouveau module : il me met une erreur sur la ligne <code></code ReDim Preserve tmp2(UBound(tmp2) - 1>
Je souhaiterai adapter le code avec mon fichier original. Il est trop lourd parce qu'il a déjà pas mal de code derrière. Je vous explique un peu : l'idée était décroiser deux fichiersafin de créer un troisème. A la fin de ce dernier, il faut supprimer les versions.
le code d'Eric, c'est la fonction Ubound qui pose un problème car il ne trouve pas le tableau attendu. 1ier problème erreur :
<code></For lig = 1 To UBound(datas) >
Le 2iè est que si je crée un nouveau module : il me met une erreur sur la ligne <code></code ReDim Preserve tmp2(UBound(tmp2) - 1>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
25 janv. 2016 à 15:24
25 janv. 2016 à 15:24
1. Est ce que c'est possible de garder les données dans la même colonne après avoir supprimé les versions.
oui, il te suffit de mofifier cobut
2. (Eric et toi) commenter vos codes
http://www.cjoint.com/c/FAzowipQQPI
Cdlmnt
oui, il te suffit de mofifier cobut
2. (Eric et toi) commenter vos codes
http://www.cjoint.com/c/FAzowipQQPI
Cdlmnt
22 janv. 2016 à 16:01
Merci pour ta réponse, le problème est qu'il faut supprimé les 6 derners caractères comportant "-01.03" car j'ai d'autres chaines caractères qui ne l'ont pas.
Exemple : il l' a :XENON-0D-20.00 par contre celle ci non ADELE.
Cdlmnt.