Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA Remplissage automatique tableau

BOILEAU

XLDnaute Junior
Bonjour,

J'essaye, mais sans succès, de remplir avec une formule VBA un tableau.
Si je peux trouver de l'aide, merci d'avance.
je vous joint mon fichier. Ce dernier est constitué de 3 feuilles
- IMPORT LES RECETTES : C'est la feuille qui contient les données
- IMPORT DANS COGILOG : C'est le tableau que je souhaite remplir avec les éléments de la feuille IMPORT LES RECETTES
- EXEMPLE TABLEAU : C'est pour que vous puissiez visualiser et comprendre comment le tableau doit être rempli. Cette feuille sera supprimée par la suite.
J'ai indiqué les cellules à remplir par des flèches. Les autres cellules servent à d'autres données.
Comme vous pourrez le constater, le nombre de lignes totale est inconnue et la constitution en nombre de ligne de chaque bloc de facture est variable.
La feuille contenant le tableau que je dois exporter en .txt dans mon logiciel de gestion est IMPORT DANS COGILOG.
Si dans la formule VBA, il est possible d'intégrer à l'aide d'un bouton l'export du fichier en .txt se serait vraiment top ! le séparateur de champ est le caractère de tabulation (ascii 9), le séparateur de ligne peut être le séparateur de ligne Mac, Window ou Unix.

Merci pour votre aide précieuse.
A votre dispo,
Bonne journée.

Frédéric
 

Pièces jointes

  • DOSSIER IMPORT.xlsm
    31.4 KB · Affichages: 12

BOILEAU

XLDnaute Junior
MERCI !!!!
Bonne journée.
Frédéric
François,

Désolé de vous embêter, mais je pense avoir fait une bêtise pour l'enregistrement du fichier.
J'ai changé mots pour mots chemin="C:\Users\franc\Desktop". Mais je pense que ce n'est pas bon puisque j'ai un message d'erreur.
Je suis sur Mac et après recherche sur le net, je ne comprend pas ce qu'il faut remplacer et comment.
Merci de votre aide.
Cordialement,
Frédéric
 

BOILEAU

XLDnaute Junior
Bonjour François,
Je me permet de revenir vers vous. Je constate que j'ai oublié de mentionner un détail dans ma demande.
Lors de la construction du tableau, il faudrait que (Dans le tableau exemple donné) les cellules C3; C5 et C12 possède la valeur du chiffre "2".
Bien sur, cette cellule doit être renseignée (se répéter) pour chaque entête de facture du tableau.
J'avais mis une croix dans ces cellules et c'est une erreur de ma part.
Très sincèrement désolé.
J'espère que vous pourrez corriger la formule qui par ailleurs est super rapide.
Bon samedi
Cordialement,
Frédéric
 

BOILEAU

XLDnaute Junior
Bonjour @fanfan38,

J'ai un petit soucis dans la formule de l'enregistrement en fichier .txt.
L'enregistrement que j'ai fais ce matin n'a pas pris en compte les dernières lignes 38 et 39 du tableau import client.
Pour tester j'ai supprimer des lignes en amont (de 3 à 24) et j'ai refais l'enregistrement en .txt. Les lignes 38 et 39 du client (de l'ancien tableau) qui n'avait été pris en compte, sont bien présentes dans ce nouvel enregistrement.
Est-ce un nombre de ligne qui pose problème ? Je ne connais pas à l'avance le nombre de lignes de l'import.
Ci-dessous, la formule en cour :
Sub EnregistrerFeuilleEntxt()
Dim i As Long, j As Long, DernièreLigne As Long, chemin As String, fich As String
Const Sep = vbTab
chemin = ActiveWorkbook.Path
fich = InputBox("Nom du fichier", "Fichier TEXTE")
Application.ScreenUpdating = False 'Fige l'écran (évite les mvt d'écran)
Open chemin & "\" & fich & ".txt" For Output As #1 'Tu crées le fichier text
Worksheets("IMPORT DANS COGILOG").Select
DernièreLigne = Cells(1, 2).SpecialCells(xlCellTypeLastCell).Row - 1
For i = 1 To DernièreLigne
For j = 1 To 107
Print #1, Cells(i, j).Value & Sep; 'ici, le séparateur
Next j
Print #1, Cells(i, j + 1).Value ' ici pas de séparateur pr le saut de ligne
Next i
Close #1
Application.ScreenUpdating = True
End Sub

Pour améliorer, serait-il possible d'avoir une fenêtre qui me demande où enregistrer ce fichier .txt ? Pour info je suis sur Excel Mac.

Merci de votre aide.

Frédéric
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…