Oter des caractères dans une cellule en VBA
Résolu/Fermé
ST31000
Messages postés
6
Date d'inscription
mercredi 19 janvier 2011
Statut
Membre
Dernière intervention
4 février 2011
-
19 janv. 2011 à 12:16
> ST31000 - 24 janv. 2011 à 14:08
> ST31000 - 24 janv. 2011 à 14:08
Bonjour à tous,
j'ai besoin de votre aide!
j'ai besoin de faire une macro me permettant de retraiter des cellules de type :
:22:1009010901KL333HHHRH
Je souhaite pouvoir dire : pour toute les cellule commençant par les caractères ":22:" enlever certains caractères à l'intérieur de la chaine de caractères.
Merci bcp pour votre aide dont j'ai bien besoin!!
a très vite j'espère
j'ai besoin de votre aide!
j'ai besoin de faire une macro me permettant de retraiter des cellules de type :
:22:1009010901KL333HHHRH
Je souhaite pouvoir dire : pour toute les cellule commençant par les caractères ":22:" enlever certains caractères à l'intérieur de la chaine de caractères.
Merci bcp pour votre aide dont j'ai bien besoin!!
a très vite j'espère
A voir également:
- Oter des caractères dans une cellule en VBA
- Caractères ascii - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
- Caractères spéciaux - Guide
6 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
Modifié par eriiic le 19/01/2011 à 12:50
Modifié par eriiic le 19/01/2011 à 12:50
Bonjour,
enlever certains caractères
Ben oui mais lesquels et qu'est-ce qui les caractérise ?
Et c'est faisable sous forme de macro (tu sélectionnes une plage et tu lances le traitement, le résultat peut être mis dans une colonne à coté ou écraser l'original) ou sous forme de fonction personnalisée (tu saisis une formule dans une cellule qui te retourne le résultat en dynamique), précise ton besoin.
eric
enlever certains caractères
Ben oui mais lesquels et qu'est-ce qui les caractérise ?
Et c'est faisable sous forme de macro (tu sélectionnes une plage et tu lances le traitement, le résultat peut être mis dans une colonne à coté ou écraser l'original) ou sous forme de fonction personnalisée (tu saisis une formule dans une cellule qui te retourne le résultat en dynamique), précise ton besoin.
eric
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
19 janv. 2011 à 14:03
19 janv. 2011 à 14:03
bonjour
J'allais poser la m^meme question qu'Eriic (bonjour) !!!
pour tester 22
uniquement parce que j'avais fait quelque chose
Eriicà toi de jouer
J'allais poser la m^meme question qu'Eriic (bonjour) !!!
pour tester 22
If Mid(lachaine, 2, 2) = "22" Then...
uniquement parce que j'avais fait quelque chose
Eriicà toi de jouer
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
19 janv. 2011 à 14:26
19 janv. 2011 à 14:26
Salut michel,
Tu pouvais répondre tu sais :-) Tu t'es pas foulé... ;-)
ST31000 : c'est plus la position des caractères qui t'interesse j'ai l'impression.
Teste :
Sélectionner la plage concernée et lancer la macro
exemple
eric
Tu pouvais répondre tu sais :-) Tu t'es pas foulé... ;-)
ST31000 : c'est plus la position des caractères qui t'interesse j'ai l'impression.
Teste :
Sub MiseEnForme() Dim c As Range For Each c In Selection If Left(c, 4) = ":22:" Then c = Left(c, 10) & Mid(c, 15, 1) & Right(c, 8) End If Next c End Sub
Sélectionner la plage concernée et lancer la macro
exemple
eric
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
19 janv. 2011 à 14:35
19 janv. 2011 à 14:35
Tu pouvais répondre tu sais :-) Tu t'es pas foulé... ;-)
Mon poil dans la main est une raison suffisante pour refiler le bébé! :-D
Mon poil dans la main est une raison suffisante pour refiler le bébé! :-D
ST31000
Messages postés
6
Date d'inscription
mercredi 19 janvier 2011
Statut
Membre
Dernière intervention
4 février 2011
1
20 janv. 2011 à 13:29
20 janv. 2011 à 13:29
Messieurs je reviens vers vous car le retraitement que je souhaite faire sur les lignes commençant pr :22:, avec mes codes actuels (ci-dessous) s'applique en faites à toutes les lignes.....Alors que je ne veux ce retraitement (qui marche bien d'ailleurs, sur les bons caractères...) que pour les lignes commençant pr :22
Pouvez vous me dire ce qui ne va pas
un grd merci d'avance...
Sub essai()
'Déclaration des variables
Dim c As Range
'Ouverture du ficher .txt
Workbooks.OpenText Filename:= _
"C:\Users\ST31000\fichier.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(0, 1), TrailingMinusNumbers:=True
Columns("A:A").EntireColumn.AutoFit
'Retraitement des 4 caractères MMDD des lignes commençant par :22:
For Each c In Range([A1], [A10000])
If (Left(c, 4) = ":22:" And (Mid(c, 16, 1) = N Or Mid(c, 16, 1) = P Or Mid(c, 16, 1) = R)) Then
c = Left(c, 10) & Mid(c, 15, 1) & Mid(c, 17, 100)
End If
Next c
'Etape 2 : Retraitement des lettres N,P,R après D ou C des lignes commençant par :22:
If (Left(c, 4) = ":61:" And (Mid(c, 16, 1) = N Or Mid(c, 16, 1) = P Or Mid(c, 16, 1) = R)) Then
c = Left(c, 10) & Mid(c, 15, 1) & Mid(c, 17, 100)
ElseIf (Mid(c, 16, 1) <> N And Mid(c, 16, 1) <> P And Mid(c, 16, 1) <> R) Then
c = Left(c, 10) & Mid(c, 15, 1) & Mid(c, 17, 100)
End If
Next c
'Enregistrement_du_fichier Macro
Windows("MT940 Valeo.txt").Activate
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\ST31000\fichier corrigé.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub
Pouvez vous me dire ce qui ne va pas
un grd merci d'avance...
Sub essai()
'Déclaration des variables
Dim c As Range
'Ouverture du ficher .txt
Workbooks.OpenText Filename:= _
"C:\Users\ST31000\fichier.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(0, 1), TrailingMinusNumbers:=True
Columns("A:A").EntireColumn.AutoFit
'Retraitement des 4 caractères MMDD des lignes commençant par :22:
For Each c In Range([A1], [A10000])
If (Left(c, 4) = ":22:" And (Mid(c, 16, 1) = N Or Mid(c, 16, 1) = P Or Mid(c, 16, 1) = R)) Then
c = Left(c, 10) & Mid(c, 15, 1) & Mid(c, 17, 100)
End If
Next c
'Etape 2 : Retraitement des lettres N,P,R après D ou C des lignes commençant par :22:
If (Left(c, 4) = ":61:" And (Mid(c, 16, 1) = N Or Mid(c, 16, 1) = P Or Mid(c, 16, 1) = R)) Then
c = Left(c, 10) & Mid(c, 15, 1) & Mid(c, 17, 100)
ElseIf (Mid(c, 16, 1) <> N And Mid(c, 16, 1) <> P And Mid(c, 16, 1) <> R) Then
c = Left(c, 10) & Mid(c, 15, 1) & Mid(c, 17, 100)
End If
Next c
'Enregistrement_du_fichier Macro
Windows("MT940 Valeo.txt").Activate
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\ST31000\fichier corrigé.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
20 janv. 2011 à 18:43
20 janv. 2011 à 18:43
Re,
Si tu veux tester un caractère il faut le mettre entre des " ", sinon c'est une variable.
Ex: Mid(c, 16, 1) = "N"
eric
Si tu veux tester un caractère il faut le mettre entre des " ", sinon c'est une variable.
Ex: Mid(c, 16, 1) = "N"
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ST31000
Messages postés
6
Date d'inscription
mercredi 19 janvier 2011
Statut
Membre
Dernière intervention
4 février 2011
1
19 janv. 2011 à 13:11
19 janv. 2011 à 13:11
Bonjour Eric,
Merci pour ta réponse
de ma chaine ":22:1009010901KL333HHHRH" j'ai besoin d'enlever les 4 caractères avant la lettre K (0901) et la lettre L après K afin d'avoir une chaine de caractère respectant le format suivant :
:22:YYMMDDK(ou une autre lettre)XXX(montant)RRRRR
J'aimerais pouvoir écraser la colonne originale....
Merci bcp de ton aide...
Merci pour ta réponse
de ma chaine ":22:1009010901KL333HHHRH" j'ai besoin d'enlever les 4 caractères avant la lettre K (0901) et la lettre L après K afin d'avoir une chaine de caractère respectant le format suivant :
:22:YYMMDDK(ou une autre lettre)XXX(montant)RRRRR
J'aimerais pouvoir écraser la colonne originale....
Merci bcp de ton aide...
ST31000
Messages postés
6
Date d'inscription
mercredi 19 janvier 2011
Statut
Membre
Dernière intervention
4 février 2011
1
19 janv. 2011 à 14:57
19 janv. 2011 à 14:57
Super!ça marche!
Merci Eric et Michel pour vos indications!
Merci Eric et Michel pour vos indications!