Bonjour, tout d'abord merci aux personnes qui prendront du temps pour me répondre.
Dans le cadre d'un projet je dois crée une macro afin a partir d'un tableau pricing le convertire en fichier .csv (pour ce fichier les séparateurs seront des espaces et non des , ou ; )
En essayant d'être claire a partir de différente colonne de mon tableau excel pricing ,je dois avoir une chaine de 31 caractére de type:
0001603305140001502RANG01 70
- Les 6 premiers caractéres ( 000160 ) sont un code fixe qui a terme devra être selectionné par un menu déroulant
- Les 13 suivants (3305140001502 ) sont extrait du tableau excel
- Les 6 suivants ( RANG01 ) sont un code fixe qui a terme devra être selectionné par un menu déroulant ou pouvant être indiquer dans une case
- Les 6 suivants ( 70) sont extrait du tableau excel
Etant un débutant en vba et n'ayant pas fait de macro "complexe" (enfin pour moi ) depuis longtemps je suis un peu perdu.
Voici la macro que j'ai actuellement:
Je sais que je suis loin du résultat escompté pour l'instant j'ai 2 problémes majeurs: (si vous pensez que ma méthode de priorisation des problémes a régler est mauvaise dite le moi)
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 Sub exportCustomCSV() Dim PlageB As Object, PlageE As Object, oL As Object, oC As Object, Tmp As String, destinataire As String, concurrent As String, separator As String Set PlageB = ActiveSheet.Range("B3:B47789") Set PlageE = ActiveSheet.Range("E3:E47789") Open "ExportThomas.csv" For Output As #1 destinataire = "000160" concurrent = "RANG01" separator = " " For Ligne = 1 To PlageB.Rows.Count Tmp = destinataire & PlageB.Cells(Ligne, 1).Value & concurrent & separator & PlageE.Cells(Ligne, 1).Value Print #1, Tmp Next Ligne Close End Sub
1er probléme;Pour mon set de plageJe voudrais remplacer B47789 et E47789 pour qu'il s'adapte a la taille du document en effet sur un autre document la fin du tableau ne sera surement pas la ligne 47789
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set PlageB = ActiveSheet.Range("B3:B47789") Set PlageE = ActiveSheet.Range("E3:E47789")
2eme probléme:
Pour l"extraction de mes 13 caractéres il arrive de temps en temps que la donnée ne comporte pas 13 chiffres de base mais 8-9-10-11-12 ,je voudrais donc compléter
en rajoutant des 0 (par la gauche)afin que cela fasse 13 caractères pour exemple: si la cellule du tableau est 140001502 que dans mon fichier csv celle-ci devienne 0000140001502
Aprés avoir réglés ces problèmes mon objectif et de faire une feuille excel ,ou avec un parcourir la personne pourra mettre son fichier excel et qu'il soit convertir au bon format et enregistrer a un endroit designé.
Pensez-vous que je m'y prend bien ?
Merci de votre aide.
Partager