Bonjour,

Je suis toujours sur ma macro de conversion de fichier xls en fichier csv d'ailleurs au passage je remercie les membres du forum qui ont pris du temps pour m'aider;
  • joe.levrai
  • rdurupt
  • pc75
  • patricktoulon



Tout d'abord voici le code de ma macro de conversion.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
ub Convert_File()
 
'Définition des variables
    Dim chemin_acces_fichier As String
    Dim xfile_source As Excel.Application
    Dim donnees_H1 As Range
    Dim donnees_H2 As Range
    Dim EAN As String
    Dim EAN_convert As String
    Dim PRICE As Double
    Dim PRICE_convert As String
    Dim PRICE_2 As Double
    Dim PRICE_convert_2 As String
    Dim Destinataire As String
    Dim First_concurrent As String
    Dim Second_concurrent As String
    Dim path_fichier
    path_fichier = ThisWorkbook.Path & "\" & "Res.csv"
 
'Initialisation des variables
    Set xfile_source = CreateObject("Excel.Application")
    EAN = ""
    EAN_convert = ""
    PRICE = 0
    PRICE_convert = 0
 
'Récupération du fichier à convertir
    Application.FileDialog(msoFileDialogOpen).Show
    chemin_acces_fichier = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
 
    xfile_source.Workbooks.Open (chemin_acces_fichier)
    xfile_source.Visible = True
 
'Zone de manipulation des donnee présentes dans le fichier
    Set donnees_H1 = xfile_source.Range(xfile_source.Range("B3"), xfile_source.Range("E65000").End(xlUp))
    donnees_H1.Interior.ColorIndex = 3
 
'Ouverture du fichier de destination pour integration sur serveur METI
Open path_fichier For Output As #1
 
Destinataire = "000160"
First_concurrent = "RANG01"
Second_concurrent = "RANG02"
 
'Parcourir la plage de données pour récupérer convertir les EAN et les prix
    For i = 1 To donnees_H1.Rows.Count
        EAN = donnees_H1.Cells(i, 1)
        PRICE = donnees_H1.Cells(i, 4)
 
        EAN_convert = String(13 - Len(Trim(EAN)), "0") & EAN
        PRICE_convert = String(6 - Len(Trim(PRICE * 100)), "0") & PRICE * 100
 
        Print #1, Destinataire & EAN_convert & First_concurrent & PRICE_convert
 
        'Verification de la présence d'un prix dans la colonne contenant le rang tarifaire numéro 2
        'Si il y a un prix alors je l'ajoute au fichier sinon je ne fais rien
        'Recherche de la valeur par accès absolue
 
        If IsEmpty(xfile_source.Cells(i + 2, 6)) = False Then
            PRICE_2 = xfile_source.Cells(i + 2, 6)
            PRICE_convert_2 = String(6 - Len(Trim(PRICE_2 * 100)), "0") & PRICE_2 * 100
            Print #1, Destinataire & EAN_convert & Second_concurrent & PRICE_convert_2
        End If
 
    Next
 
    Close #1
    xfile_source.Application.DisplayAlerts = False
    xfile_source.Application.Quit
 
End Sub
Je travail actuellement sur l'interface de celle-ci afin de la rendre modulable.

Dans mon code j'ai une variable "destinataire" qui de base corresspond a =000160 ,je voudrais mettre 2 radio bouton (ou un formulaire déroulant ) qui permet de selectionner une valeur pour destinataire (par exemple 000161 et 000162) suit au fait de selectionner cette variable ,ma macro s'executerait en prenant en compte le choix choisi pour la variable destinataire.

J'ai fais des recherches,mais je n'arrive pas a appliquer ce que je lis a l'utilisation que je veux en faire, du a mon trés faible niveau en vba.

En vous remerciant de votre aide.

Cordialement.