Concaténer et transférer vers fichier .dat

  • Initiateur de la discussion Initiateur de la discussion degap05
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

degap05

XLDnaute Impliqué
Bonjour le forum,

Deux fichiers joints.
Dans le fichier Excel, les cellules des colonnes a,b,c,d,e,f, sont concaténées en g. Savez-vous comment introduire un espace avant le premier chiffre en colonne g, par la formule de concaténation ?
Est-il possible de réaliser la même action de concaténation par macro ?

Les données sont transmises au fichier .dat, qui doit se trouver dans le même emplacement et dont le nom est spécifié en a2 (macro du forum).

Pensez-vous qu'il soit possible de combiner l'action de concaténation et de transmission dans la même macro?

Merci de votre aide.
 

Pièces jointes

Re : Concaténer et transférer vers fichier .dat

Salut,

Comme ceci par exemple (J'ai suppose que le fichier dat etait vide et s'il existe il est remplace):

Code:
Sub Texte()
    Dim WkDat As Workbook
    
    Application.ScreenUpdating = False
    Set WkDat = Workbooks.Add
    
    With ThisWorkbook.Sheets(1)
        .Range("G4").FormulaR1C1 = "="" ""&RC[-6]&RC[-5]&""        ""&RC[-4]&RC[-3]&""       ""&RC[-2]&RC[-1]"
        With .Range("G4:G" & .Range("A65536").End(xlUp).Row)
            .FillDown
            .Calculate
            .Copy
            WkDat.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
            .ClearContents
        End With
        On Error Resume Next
            Kill ThisWorkbook.Path & "\" & .Range("A2").Value & ".dat"
        On Error GoTo 0
        WkDat.SaveAs Filename:=ThisWorkbook.Path & "\" & .Range("A2").Value & ".dat", FileFormat:=xlUnicodeText
        WkDat.Close savechanges:=False
        
    End With
    
    Set WkDat = Nothing
    Application.ScreenUpdating = True
End Sub
++
Minick
 
Re : Concaténer et transférer vers fichier .dat

Bonjour, Minick,

Super, ta proposition fait parfaitement le travail!!

Cette opération doit s'intégrer dans la transmission d'une commande et le traitement du fichier .dat par un logiciel qui le transforme et pilote des stockeurs rotatifs.

Pour l'instant le fichier .dat créé, n'est pas reconnu par le système🙁

Mais je ne désespère pas d'y arriver avec votre aide 🙂

Merci et A+
 
Re : Concaténer et transférer vers fichier .dat

Bonjour le Forum, bonjour Minick,

Il semble que je doive sauvegarder en ANSI au lieu d'Unicode.
J'ai tenté de modifier la ligne:
WkDat.SaveAs Filename:=ThisWorkbook.Path & "\" & .Range("A2").Value & ".dat", FileFormat:=xlUnicodeText

par:
WkDat.SaveAs Filename:=ThisWorkbook.Path & "\" & .Range("A2").Value & ".dat", FileFormat:=xlANSIText

mais cela ne fonctionne pas.

Avez-vous une idée ?

Merci A+
 
Re : Concaténer et transférer vers fichier .dat

Re,

Je pense que le format de sauvegarde est bon (enfin j'espere sinon je ne sais pas)
Par contre, ily a peut etre un probleme de cadrage.

Essaies ceci:

Code:
Sub Texte()
    Dim WkDat As Workbook
    
    Application.ScreenUpdating = False
    Set WkDat = Workbooks.Add
    
    With ThisWorkbook.Sheets(1)
        .Range("G4").FormulaR1C1 = "=REPT("" "",12-LEN(RC[-6]&RC[-5]))&RC[-6]&RC[-5]&REPT("" "",18-LEN(RC[-4]&RC[-3]))&RC[-4]&RC[-3]&REPT("" "",14-LEN(RC[-2]&RC[-1]))&RC[-2]&RC[-1]"
        With .Range("G4:G" & .Range("A65536").End(xlUp).Row)
            .FillDown
            .Calculate
            .Copy
            WkDat.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
            .ClearContents
        End With
        On Error Resume Next
            Kill ThisWorkbook.Path & "\" & .Range("A2").Value & ".dat"
        On Error GoTo 0
        WkDat.SaveAs Filename:=ThisWorkbook.Path & "\" & .Range("A2").Value & ".dat", FileFormat:=xlUnicodeText
        WkDat.Close savechanges:=False
        
    End With
    
    Set WkDat = Nothing
    Application.ScreenUpdating = True
End Sub

++
Minick
 
Re : Concaténer et transférer vers fichier .dat

Bonjour, Minick,

J'essaie tes changements demain dans la journée et te tiens au courant.

Merci A+

Bonjour Minick,
C'est bon cela fonctionne, J'aurai certainement besoin de toi à nouveau, pour adapter la formule de concaténation, en vue de sauter une étape dans ma transmission de données.
Merci.

A+
 
Dernière édition:
Re : Concaténer et transférer vers fichier .dat

Bonjour le forum, bonjour Minick,

Comme je le disais dans mon précédent message, j'aimerais sauter une étape dans la transmission des données.

Du coup la formule de concaténation est à modifier et je suis loin d'y être parvenu malgré de nombreux essais.

Pour visualiser le résultat à obtenir, ouvrir le fichier essai, cocher la colonne D et aller en feuille "Validé".

Le résultat final de cadrage, après avoir actionné la macro CopieBlocNote doit être identique aux lignes du fichier D4336184 (le cadrage, pas les données, fournies à titre d'exemple). Attention, il y a des données tout à droite du fichier texte.

Merci de votre attention.
 

Pièces jointes

Dernière édition:
Re : Concaténer et transférer vers fichier .dat

Bonjour Minick,

Tout d'abord, merci de te replonger dans mon problème.

Les 00000000, correspondent aux données de la colonne C, qui auraient du s'inscrire 00001500 et le 5050 = données colonne D = 1500.

dest.Offset(0, 0).Value = Format(Now, "yyyymmdd") 'dans la colonne a
dest.Offset(0, 1).Value = ":00:0000000000" 'dans la colonne b
dest.Offset(0, 2).Value = "00001500" 'dans la colonne c
dest.Offset(0, 3).Value = "1500" 'dans la colonne d
dest.Offset(0, 4).Value = "1111111" 'dans la colonne e
dest.Offset(0, 5).Value = Cells(l, 2).Value 'copie le code en colonne f
dest.Offset(0, 6).Value = Cells(l, 1).Value 'copie le libellé en colonne g
dest.Offset(0, 7).Value = Cells(l, 3).Value 'copie la qté en colonne h
dest.Offset(0, 8).Value = "xxxxx" 'dans la colonne i
dest.Offset(0, 9).Value = "xxx" 'dans la colonne j
dest.Offset(0, 10).Value = "0000000000:00:00" 'dans la colonne k


Désolé du manque de concordance des données.

Bien sur, autant de précisions que tu le souhaites.
Merci.
A+
 
Re : Concaténer et transférer vers fichier .dat

Re,

Essai ceci:
Code:
.Range("L2").FormulaR1C1 = "=RC[-11]&""00""&RC[-10]&REPT("" "",18-LEN(RC[-10]))&TEXT(RC[-9],""00000000"")&""     ""&RC[-8]&REPT("" "",113-LEN(RC[-8]))&RC[-7]&REPT("" "",11-LEN(RC[-7]))" _
                                    & "&RC[-6]&REPT("" "",11-LEN(RC[-6]))&MID(RC[-5],1,40)&REPT("" "",40-LEN(MID(RC[-5],1,40)))&RC[-4]&REPT("" "",12-LEN(RC[-4]))" _
                                    & "&RC[-3]&REPT("" "",20-LEN(RC[-3]))&RC[-2]&REPT("" "",7-LEN(RC[-2]))&RC[-1]&REPT("" "",16-LEN(RC[-1]))"

++
Minick
 
Re : Concaténer et transférer vers fichier .dat

Bonjour Minick, Paritec,

Vous êtes incroyables de disponibilité !!!!!

Minick, ta formule fonctionne parfaitement.
Je ne pourrai réellement tester que lundi au travail.
Le fichier créé est une commande de médicaments pour un service.
Celui-ci, va se positionner dans un dossier, qui est scruté par une procédure du logiciel de fonctionnement de nos stockeurs (Hännel), qui contiennent les médicaments. Le fichier est récupéré par ce logiciel (Copilote), il est ensuite sélectionné par l'utilisateur, qui peut servir la commande.

Merci encore, bon week-end et le résultat lundi !!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
266
Retour