XL 2016 Bug macro sur boucle FOR EACH depuis MAJ Office

samimi94

XLDnaute Occasionnel
Bonjour le forum,

Je sollicite de nouveau votre aide suite à plusieurs recherches infructueuses.

Je rencontre un problème d’exécution d'une macro sous 2016 (pack 365) depuis la mise à jour du pack Office cette semaine.

L’exécution "pas à pas" semble indiquer que le bug se produit sur deux boucles :

Code:
 Dim x As Range
    For Each x In Selection
        x = suppAccent(x.Value)
    Next x

et

Code:
Set Plage = Intersect(Selection, ActiveSheet.UsedRange)
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
    Cel = UCase(Cel)
Next Cel

Ce problème a été décelé uniquement sous la version 2016 (365), or sur la version 2016 PC même après MAJ la macro fonctionne correctement.

En espérant que cette erreur peut-être corrigée par une simple modification de code.

Merci à tous pour votre aide.

Samimi94
 

samimi94

XLDnaute Occasionnel
Bonsoir Le forum,
Staple 1600,

Avant tout, merci pour tout le temps que tu as passé sur mon problème.
J'ai adapté ton code est le résultat semble correspondre au résultat attendu, je ne pourrai le confirmer qu'une fois au boulot pour tester avec le logiciel d'import. Quoiqu'il en soit le résultat est super, plus de bug de mon application et j'ai bien un fichier texte au final.

Auparavant, pour générer le fichier texte les utilisateurs appuyaient sur un bouton qui exécutait l'ensemble des codes macro.
Là, du coup j'ai un Sub Export et un Sub CreateFile
Comment exécuter avec un seul bouton l’enchaînement de ces deux macros et sauvegarder le fichier texte automatiquement dans le même répertoire que le fichier xls ? Actuellement je dois exécuter les macros manuellement et choisir le bon répertoire.

Merci encore pour cette aide précieuse.
Samimi94
 

samimi94

XLDnaute Occasionnel
Bonjour Le Forum, Staple 1600,

Merci pour toute l'aide que vous apportez aux néophytes comme moi.
Pour tout vous dire je n'y connais pas grand chose en codification VBA. Toutes les macros que j'utilise sont des bouts de codes récupérés à droite à gauche et améliorées grâce à l'aide de personne comme vous.

J'ai bien fait des recherches en parallèle pour me débrouiller seule, et pour l’exécution de plusieurs macros depuis un seul et même bouton j'ai réussi à trouver comment faire en intégrant le code CALL qui appelle le code suivant.
Cependant, j'ai beau chercher comment faire pour définir automatiquement le répertoire de sauvegarde mais impossible de savoir comment l'intégrer à ce code.
Je continue mes recherches et vous remercie encore pour votre aide et patience.

Bonne fin de WE à tous.

Samimi94.
 

samimi94

XLDnaute Occasionnel
Staple 1600,

Super ! Le fichier texte généré est bien sauvegardé dans le même répertoire. Est-il possible de supprimer la date dans le nom de fichier ?
J'ai beau retirer le bout de code qui est fait référence je n'y parviens pas car je perds l'extension .txt et quand je laisse l'extension j'ai une erreur. Je suppose que cela n'est pas aussi simple et qu'un code spécifique est nécessaire.
Enfin, rien à voir avec l’exécution de la macro, mais dans mon fichier texte je perds le 1er zéro quand il s'agit d'un CP tel que 06100. J'ai beau essayer le formatage NumberFormat = "00000" il ne le conserve pas dans le fichier texte. Y a-t-il une solution ?

Un grand merci. Je n'y croyais plus avec cette MAJ et finalement je vais pouvoir continuer à utiliser cette macro.

Merci.
Samimi94.
 

Staple1600

XLDnaute Barbatruc
Re,

@samimi94
Telle qu'est écrit la macro, le formatage du nom du fichier se fait ici:
sPath = ThisWorkbook.Path & "\" & ActiveSheet.Name & Format(Date, "_ddmmyyyy"".txt""")
(cela permet de créer deux fois le même fichier txt puisque le nom se base sur le nom de l'onglet)
Il fallait donc changer comme suit:
sPath = ThisWorkbook.Path & "\" & ActiveSheet.Name & ".txt"
(dans ce cas, on peut pas exécuter deux fois la macro si on n'a pas changé le nom de la feuille active avant)
 

samimi94

XLDnaute Occasionnel
Staple 1600,

C'est parfait !
Si tu as une solution pour la perte du 1er zéro du CP je suis preneuse.
J'ai déjà un fichier comme avant la MAJ et qui plus est simplifié de par ton aide précieuse.

Merci pour tout ce que vous faites pour nous.

Samimi94.
 

Staple1600

XLDnaute Barbatruc
Re

@samimi94
Peux-tu préciser le nombre caractère maxi que doit contenir chaque champ?
(ou si tu préfères chaque colonne)

Accessoirement, peux-tu préciser, stp, avec quel logiciel ce fichier texte sera utilisé ?
(afin de connaitre les spécifications requises pour l'importation de fichier *.txt)
 

samimi94

XLDnaute Occasionnel
Staple 1600,

Le nombre de caractères pour chaque champ est décomposé ainsi (le CP étant le champ s(10)):

s(0) = 8
s(1) = 1
s(2) = 6
s(3) = 15
s(4) = 9
s(5) = 2
s(6) = 10
s(7) = 32
s(8) = 32
s(9) = 32
s(10) = 10
s(11) = 27
s(12) = 2
s(13) = 2
s(14) = 30
s(15) = 25
s(16) = 12
s(17) = 8
s(18) = 32
s(19) = 32
s(20) = 32
s(21) = 10
s(22) = 27
s(23) = 2
s(24) = 59

Concernant le programme d'import c'est un vieux soft genre DOS (je ne sais pas si c'est de l'ASCII ou de l'EBCDIC) mais il faut un fichier texte avec respect des longueurs de champs et caractères.

Merci.

Samimi94.
 

samimi94

XLDnaute Occasionnel
Staple 1600,

Ci-joint un type de fichier.
Le CP est bien sur 5 caractères mais le fichier texte doit avoir une longueur de 10 pour pouvoir intégrer le format CP des pays étrangers.
Ce qui m'intéresse est d'avoir au moins le 1er zéro pour les CP français (ex : 06000xxxxx).

Merci.

Samimi94.
 

Pièces jointes

  • test.xlsx
    11 KB · Affichages: 38

Discussions similaires

Réponses
2
Affichages
320

Statistiques des forums

Discussions
315 085
Messages
2 116 071
Membres
112 648
dernier inscrit
Otete Christian