Aide Vba rechercher remplacer
Fermé
Boyscout_27
Messages postés
14
Date d'inscription
mardi 4 octobre 2016
Statut
Membre
Dernière intervention
17 janvier 2018
-
4 oct. 2016 à 17:11
Boyscout_27 Messages postés 14 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 17 janvier 2018 - 9 nov. 2016 à 10:02
Boyscout_27 Messages postés 14 Date d'inscription mardi 4 octobre 2016 Statut Membre Dernière intervention 17 janvier 2018 - 9 nov. 2016 à 10:02
A voir également:
- Aide Vba rechercher remplacer
- Rechercher ou entrer l'adresse - Guide
- Rechercher et remplacer word - Guide
- Remplacer disque dur par ssd - Guide
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
- Adresse IP locale : comment la trouver facilement - Guide
2 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
4 oct. 2016 à 22:16
4 oct. 2016 à 22:16
Bonjour,
Pour ta colonne G je te propose de remplacer
Pour la colonne I, c'est plus compliqué car tu dois avoir le point comme séparateur décimal sur ton ordinateur et donc en mettant virgule tu n'est plus numérique. Selon l'utilisation du fichier txt que tu fais, as-tu besoin de la virgule ?
Pour ta colonne G je te propose de remplacer
Columns("G:G").Select Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=Falsepar
Dim cel As Range For Each cel In ActiveSheet.UsedRange.Columns("G:G").Cells If InStr(1, cel, "/") Then cel.Value = CDate(Replace(cel.Value, "'", "")) Next cel
Pour la colonne I, c'est plus compliqué car tu dois avoir le point comme séparateur décimal sur ton ordinateur et donc en mettant virgule tu n'est plus numérique. Selon l'utilisation du fichier txt que tu fais, as-tu besoin de la virgule ?
Boyscout_27
Messages postés
14
Date d'inscription
mardi 4 octobre 2016
Statut
Membre
Dernière intervention
17 janvier 2018
6 oct. 2016 à 09:17
6 oct. 2016 à 09:17
Mince, ça ne fonctionne pas. Le format date n'est plus respecté une fois le fichier .txt créé... Le format nombre non plus.
Une autre solution ?
Une autre solution ?
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
13 oct. 2016 à 10:02
13 oct. 2016 à 10:02
Bonjour,
Le format date n'est plus respecté
Lorsque tu ouvres ton fichier .txt, il te faut définir le format de la colonne date en JMA.
Pour le format nombre c'est à toi de vérifier quel est ton délimiter décimal : pour moi avec le point cela fonctionne correctement en "standard".
Le format date n'est plus respecté
Lorsque tu ouvres ton fichier .txt, il te faut définir le format de la colonne date en JMA.
Pour le format nombre c'est à toi de vérifier quel est ton délimiter décimal : pour moi avec le point cela fonctionne correctement en "standard".
En fait, tout fonctionne parfaitement. Quand je fais le pas à pas détaillé, je vois que tout s'enchaîne bien et les formats sont respectés. C'est une fois que le fichier est fermé que ça bouscule tout.
Si je mets :
ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False
--> Le fichier .txt qui est créé ne respecte plus le format date et nombre.
Si je mets :
ActiveWorkbook.SaveAs Filename:=Fichier & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
--> Le fichier .xlsx respecte bien le format date, mais pas le format Nombre...
On pourrait pas imaginer en Vba l'équivalent de la formule Cnum() ?
Si je mets :
ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False
--> Le fichier .txt qui est créé ne respecte plus le format date et nombre.
Si je mets :
ActiveWorkbook.SaveAs Filename:=Fichier & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
--> Le fichier .xlsx respecte bien le format date, mais pas le format Nombre...
On pourrait pas imaginer en Vba l'équivalent de la formule Cnum() ?
Y'a quand même un truc qui m'échappe... A m'en arracher les cheveux.
Si dans mon code, je termine en écrivant
ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False
'ActiveWorkbook.Close
Donc il me ferme le fichier texte tout seul comme un grand... Quand j'ouvre ensuite ce fichier, les formats date et nombre ne sont pas respectés.
Par contre, j'ai fait le test, sans mettre
'ActiveWorkbook.Close
Je suis donc obligé de moi-même cliquer sur la croix en haut à droite du fichier pour fermer, cliquer sur Oui Voulez-vous enregistrer les modifications apportées et recliquer sur Oui ...peut contenir des informations non compatibles avec Texte... et blablabla...
Et LA, quand j'ouvre ensuite le fichier .txt, tout est propre!
D'où mon interrogation... Y'a-t-il un bout de code à ajouter entre ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False
et
'ActiveWorkbook.Close
pour ne pas à avoir toutes les étapes à faire en manuel ?
Si dans mon code, je termine en écrivant
ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False
'ActiveWorkbook.Close
Donc il me ferme le fichier texte tout seul comme un grand... Quand j'ouvre ensuite ce fichier, les formats date et nombre ne sont pas respectés.
Par contre, j'ai fait le test, sans mettre
'ActiveWorkbook.Close
Je suis donc obligé de moi-même cliquer sur la croix en haut à droite du fichier pour fermer, cliquer sur Oui Voulez-vous enregistrer les modifications apportées et recliquer sur Oui ...peut contenir des informations non compatibles avec Texte... et blablabla...
Et LA, quand j'ouvre ensuite le fichier .txt, tout est propre!
D'où mon interrogation... Y'a-t-il un bout de code à ajouter entre ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False
et
'ActiveWorkbook.Close
pour ne pas à avoir toutes les étapes à faire en manuel ?
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
Modifié par gbinforme le 13/10/2016 à 18:31
Modifié par gbinforme le 13/10/2016 à 18:31
Bonsoir,
Tu pourrait peut-être essayer :
Tu pourrait peut-être essayer :
ActiveWorkbook.SaveAs Filename:=Fichier & ".txt", FileFormat:=xlText, CreateBackup:=False ActiveWorkbook.Close savechanges:=False
Boyscout_27
Messages postés
14
Date d'inscription
mardi 4 octobre 2016
Statut
Membre
Dernière intervention
17 janvier 2018
>
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
9 nov. 2016 à 09:53
9 nov. 2016 à 09:53
Pardon de revenir si tardivement sur la discussion... Je n'avais pas été alerté par ton ajout Gbinforme...
Le fichier txt se génrère ainsi avec l'ajout de savechanges:=False
Nom Salle N° Ident N° séjour Nom Prénom Date arrivée Heure Cot. Code Facturé
JEAN ECHOGRAPHIE 1 14 C MAQ ERI 1/14/2016 10:47 ZCQM "56,7"
JEAN ECHOGRAPHIE 1 16 C DEL MAR 1/25/2016 10:56 ZCQM "75,6"
JEAN ECHOGRAPHIE 1 11 C KOU NIC 1/25/2016 16:49 JAQM "52,45"
Le fichier txt se génrère ainsi avec l'ajout de savechanges:=False
Nom Salle N° Ident N° séjour Nom Prénom Date arrivée Heure Cot. Code Facturé
JEAN ECHOGRAPHIE 1 14 C MAQ ERI 1/14/2016 10:47 ZCQM "56,7"
JEAN ECHOGRAPHIE 1 16 C DEL MAR 1/25/2016 10:56 ZCQM "75,6"
JEAN ECHOGRAPHIE 1 11 C KOU NIC 1/25/2016 16:49 JAQM "52,45"
5 oct. 2016 à 08:44
Pour la colonne J... Le but est de pouvoir faire des sommes par la suite. Je stocke en fichier .txt les données, mais je les exploite via .xlsx.
J'ai l'impression que si je fais juste la 1ère opération, ça fonctionnerait non ?
Columns("J:J").Select
Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
5 oct. 2016 à 08:48
Date arrivée
1/14/2016
1/25/2016
1/25/2016
02/01/2016
2/16/2016
2/25/2016
2/25/2016
3/15/2016
5 oct. 2016 à 08:55
Tu pourras me mettre les explications pour que je comprenne bien.
Lorsque tu utilises excel fonctionne en alphabétique alors qu'avec le résultat est une date.
vérifie que c'est une date en entrée sinon on plante sur la cellule titre.
permet de ne traiter que les cellules utiles.
J'ai l'impression que si je fais juste la 1ère opération, ça fonctionnerait non ?
Cela devrait fonctionner car tu vas sauvegarder avec le point mais comme c'est ton séparateur décimal, lorsque tu vas ouvrir, cela fonctionnera.