Données à transformer

Hello à tous,

J'aurai besoin d'aide pour transformer, via une macro, mes données de "Feuil1" à "Feuil2" (cf. PJ).

L'idée est de dire : "si la cellule en colonne 5 'FILTRE' est vide, je prends la ligne, sinon, je l'exclu"

Et de renommer comme mentionner les intitulés de colonne.

ça a l'air simple comme ça, mais je suis vraiment nul !

Merci à vous.

2macro-don.xlsx (9.10 Ko)

Salut,

Ce bout de code fait tout ce que tu veux

Sub MacroDON()
'
' MacroDON Macro
'

'Suppresion des lignes indésirables
Nb_Lignes = WorksheetFunction.CountA(Range("A:A"))
For i = 2 To Nb_Lignes
If Range("E" & i).Value <> "" Then
Rows(i & ":" & i).Delete Shift:=xlUp
i = i - 1
End If
Next

'Suppresion des colonnes B et E
Range("B:B").Delete
Range("D:D").Delete
'Renomage des en-têtes
Range("A1").Value = "ITNO"
Range("B1").Value = "BCCN"
Range("C1").Value = "BFC"
End Sub

Girodo

Bonjour le fil, bonjour le forum,

Une autre proposition :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (onglet Souce)
Dim OD As Worksheet 'déclare la variable OD (onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau ds Lignes)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
Set OD = Worksheets("Feuil2") 'définit l'onglet source OD
OD.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'vide d'éventuelles anciennes données de l'onglet destination (sauf les en-têtes en ligne 1)
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 5) = "" Then 'condition : si la donnée ligne I colonne 5 de TV est vide
        ReDim Preserve TL(1 To 3, 1 To K) 'redimensionne le tableau des lignes TL (3 lignes, K colonnes)
        TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (= Tranposition)
        TL(2, K) = TV(I, 3) 'récupère dans la ligne 2 de TL la donnée en colonne 3 de TV (= Tranposition)
        TL(3, K) = TV(I, 4) 'récupère dans la ligne 3 de TL la donnée en colonne 4 de TV (= Tranposition)
        K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
'si K est supérieure à 1, renvoie dans la cellule A2 redimensionnée de l'onglet OD, le tableau TL transposé
If K > 1 Then OD.Range("A2").Resize(UBound(TL, 2), 3).Value = Application.Transpose(TL)
End Sub

Salut les gars,

Merci pour vos réponses, c'est tout à fait ça :

Rechercher des sujets similaires à "donnees transformer"