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

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

  • Initiateur de la discussion Initiateur de la discussion meganspt
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

meganspt

Guest
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

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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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