Besoin d'une macro ou d'une formule pour mmon fichier

meganspt

XLDnaute Nouveau
Bonsoir au forum

Je pense qu'avec le fichier, je pourrais mieux être compris, je vous le met en piéce jointe,comme j'ai un fichier un peu "bordélique", j'ai besoin d'un macro afin de lui donner forme et vu qu'ici tous est possible, je viens à vous

Merci de votre aide
 

Pièces jointes

  • test3.xlsx
    10.9 KB · Affichages: 63
  • test3.xlsx
    10.9 KB · Affichages: 81
  • test3.xlsx
    10.9 KB · Affichages: 82

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'une macro ou d'une formule pour mmon fichier

Bonjour le fil, bonjour le forum,

Une proposition par macro :
Code:
Sub Macro1()
Dim s As Object 'déclare la variable s (onglet Source)
Dim d As Object 'déclare la variable d (onglet Destination)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim i As Long 'déclare la variable i (Incrément)
Dim tb() As Variant 'déclare le tableau tb
Dim j As Long 'déclare la variable j (incrément)

Set s = Sheets("fichier brut") 'définit l'onglet source (tu adapteras)
Set d = Sheets("ce que je voudrais") 'définit l'onglet destination (tu adapteras)
With s 'prend en compte l'onglet source
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
    For i = 1 To dl 'boucle de 1 à dl
        .Cells(i, 1).Value = Trim(.Cells(i, 1).Value) 'supprime les éventuels espaces avant et après dans la cellule
        'condition si la cellule n'est pas vide et si la cellule au dessous n'est pas vide non plus
        If .Cells(i, 1).Value <> "" And .Cells(i + 1, 1).Value <> "" Then
            ReDim Preserve tb(1, j) 'redimentionne le tableau tb
            tb(0, j) = .Cells(i, 1).Value 'récupère la valeur de la cellule
            tb(1, j) = Split(.Cells(i + 1, 1), " - ")(1) 'récupère le texte après " - " de la cellule en dessous
            j = j + 1 'incrément j
        End If 'fin de la condition
    Next i 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet s
d.Range("A1").Resize(UBound(tb, 2) + 1, 2) = Application.Transpose(tb) 'place les données du tableau dans l'onglet d
End Sub
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
281

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign