VBA et renseignement

martine.basnier

XLDnaute Nouveau
Bonjour

Je viens une nouvelle fois sur ce forum car votre aide est très pertinente.

Tout d'abord existe t-il par correspondance ou sur le net des formations pour apprendre les macros (cours = exercices).

Je suis très intéressée pour apprendre les macros.

En attendant, j'ai de nouveau besoin de votre aide pour me sortir un fichier au format csv en partant d'un fichier de nos agences d'intérim.

J'ai un fichier excel et j'aimerais avoir sur une autre feuille les données suivantes (voir piéce jointe)

Nom de l'établissement (Remplacer ENTREPRISE 1 par M012)
Numéro de commande (sur 10 caractères)
Numéro de poste (5 caractères, sera en général = 00010)
Centre de coût = code analytique sur 5 caractères en alpha
Nom et prénom dans une même colonne
Nombre d’heures
Motif de recours
Montant
Date du dernier jour du mois (colonne H et I)

Merci

Martine
 

Pièces jointes

  • Martine.xls
    28 KB · Affichages: 45
  • Martine.xls
    28 KB · Affichages: 46
  • Martine.xls
    28 KB · Affichages: 47

Dull

XLDnaute Barbatruc
Re : VBA et renseignement

Salut Martine, le Forum

Tout d'abord Pour apprendre tu es au bon endroit :)

Ensuite, avant de t'attaquer aux Macros je te conseil, et c'est mon humble avis, de bien maitriser les Formules ou du moins d'en connaitre les principales :)

Je te dit ça car moi aussi je reçois des CSV et je n'ai rien trouvé de mieux que les formules pour pouvoir les exploiter

Un essai avec des Formules
On pourra toujours améliorer

Bonne Journée
 

Pièces jointes

  • Martine.xls
    34 KB · Affichages: 34
  • Martine.xls
    34 KB · Affichages: 38
  • Martine.xls
    34 KB · Affichages: 36

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA et renseignement

Bonjour Martine, Dull, bonjour le forum,

Une proposition VBA avec le code ci-dessous :
Code:
Sub Macro1()
Dim os As Worksheet 'déclare la variable os (Onglet Source)
Dim oc As Worksheet 'déclare la variable oc (Onglet Cible)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim j As Byte 'déclare la variable j (Jour)
Dim m As Byte 'déclare la variable m (Mois)
Dim a As Long 'déclare la variable a (Année)
Dim dt As Date 'déclare la variable dt (DaTe)

Set os = Sheets("Fichier Eflex") 'définit l'onglet source os
Set oc = Sheets("Résultat") 'définit l'onglet cible oc
dl = os.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl
For Each cel In os.Range("A2:A" & dl) 'boucle sur toutes les cellules éditées cel de la colonne A de l'onglet source
    Set dest = oc.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
    dest.Value = "M012" 'place "M012" dans la colonne A (cible)
    dest.Offset(0, 1).Value = Split(cel.Offset(0, 1).Value, "-", -1)(UBound(Split(cel.Offset(0, 1).Value, "-", -1))) 'récupère en colonne B (cible) les caractères après le dernier tiret de la colonne B (source)
    dest.Offset(0, 2).Value = Split(cel.Offset(0, 1).Value, "-", -1)(0) 'récupère en colonne C (cible) les caractères avant le premier tiret de la colonne B (source)
    dest.Offset(0, 2).NumberFormat = "00000" 'modifie le format de la colonne C (cible)
    dest.Offset(0, 3).Value = Split(cel.Offset(0, 2).Value, "-", -1)(0) 'récupère en colonne D (cible) les caractères avant le premier tiret de la colonne C (source)
    dest.Offset(0, 3).NumberFormat = "00000" 'modifie le format de la colonne D (cible)
    dest.Offset(0, 4).Value = cel.Offset(0, 4).Value & " " & cel.Offset(0, 5).Value 'récupère en colonne E (cible) le nom (E source) et le prénom (F source) concaténés
    dest.Offset(0, 5).Value = cel.Offset(0, 9).Value 'récupère en colonne F (cible) le nombre d'heures en facture (J source)
    dest.Offset(0, 6).Value = cel.Offset(0, 6).Value 'récupère en colonne G (cible) Libellé motif de recours (G source)
    dest.Offset(0, 7).Value = cel.Offset(0, 10).Value 'récupère en colonne H (cible) le montant total en facture (K source)
    j = 1 'définit la variable j
    m = cel.Offset(0, 7).Value + 1 Mod 12 ''définit la variable m (un mois de plus que celui indiqué en H (source)
    a = cel.Offset(0, 8).Value 'récupère l'année
    dt = j & "/" & m & "/" & a 'définit la date dt
    dest.Offset(0, 8).Value = dt - 1 'place en colonne I (cible) la date dt moins un jour
Next cel 'prochaine cellule cel de la boucle
End Sub
Le fichier :
 

Pièces jointes

  • Martine_v01.xls
    23 KB · Affichages: 44

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22