Réorganisation cellule
Bonjour,
Je me casse les dents sur une macro, comme beaucoup de débutant, et n'ayant pas trouvé de ressource, je me permet de vous demander un petit coup de pouce.
J'ai un fichier csv qui fait N ligne et 4 colonnes. (comme ci dessous)
Serial | Devicetype | memory |ostype
SN1 | Devicetype1 | 4096 |linux
SN2 | Devicetype1 | 2048 |windows
SN3 | Devicetype2 | 8092 |UNIX
L'idée c'est de réorganiser les cellule de la façon suivante afin de pouvoir réimporter le fichier.
Serial Nom caracteristique Valeur
SN1 Devicetype Devicetype1
SN1 memory 4096
SN1 ostype linux
SN2 Devicetype Devicetype1
SN2 memory 2048
J'ai codé ce petit morceau afin de me rendre compte des éléments dont j'ai besoin, mais malheureusement je n'arrive pas à créer la boucle.
Option Explicit
Option Base 1
Private Sub test()
Dim i As Integer
Dim J As Integer
Dim k As Integer
Dim l As Integer
Dim m As Integer
i = 2 'correspond cellule A2 / serial number à récopier pour chaque caract
J = 2 'ligne de démarrage
k = 2 'numéro de ligne
m = 2 'Colonne
Worksheets("ligne").Range("A" & J).Value = Range("A" & i).Value
Worksheets("ligne").Range("B" & i).Value = Range("B" & i - 1).Value
Worksheets("ligne").Range("B" & J).Value = Range("B" & i - 1).Value
Worksheets("ligne").Range("C" & J).Value = Range("B" & i).Value
Worksheets("ligne").Range("B" & J).Value = Range("B" & i - 1).Value
Worksheets("ligne").Range("B" & J).Value = Range("B" & i - 1).Value
Worksheets("ligne").Range("A" & J + 1).Value = Range("A" & i).Value
Worksheets("ligne").Range("C" & J + 1).Value = Range("D" & i).Value
Worksheets("ligne").Range("B" & J + 1).Value = Range("D" & i - 1).Value
Worksheets("ligne").Range("A" & J + 2).Value = Range("A" & i).Value
Worksheets("ligne").Range("C" & J + 2).Value = Range("F" & i).Value
Worksheets("ligne").Range("B" & J + 2).Value = Range("F" & i - 1).Value
Worksheets("ligne").Range("A" & J + 3).Value = Range("A" & i + 1).Value
Worksheets("ligne").Range("B" & J + 3).Value = Range("B" & i - 1).Value
Worksheets("ligne").Range("C" & J + 3).Value = Range("D" & i + 1).Value
End Sub
Est ce que l'un d'entre vous aurez une piste à me proposer?
Merci
Bonjour,
Pouvez-vous nous envoyer votre fichier svp?
Cindy
Bonjour,
Voilà ma proposition:
Sub TransformerDonnees()
Dim Lig As Integer, DerLig As Integer
With Sheets("TaFeuille")
DerLig = .Cells(Rows.Count, 1).End(xlUp).Row
For Lig = 2 To DerLig
Sheets("FeuilleVide").Cells(3 * Lig - 4, 1) = .Cells(Lig, 1) & " " & .Cells(1, 2) & " " & .Cells(Lig, 2)
Sheets("FeuilleVide").Cells(3 * Lig - 3, 1) = .Cells(Lig, 1) & " " & .Cells(1, 3) & " " & .Cells(Lig, 3)
Sheets("FeuilleVide").Cells(3 * Lig - 2, 1) = .Cells(Lig, 1) & " " & .Cells(1, 4) & " " & .Cells(Lig, 4)
Next Lig
End With
End SubBonjour,
D'après votre fichier et en utilisant le type de langage que vous utilisez, voici le code qui marcherait bien :
Sub Reorganisation()
Dim DerniereLigneFeuil1 As Integer
Dim NumLigneFeuil1 As Integer
Dim NumLigneLigne As Integer
NumLigneLigne = 2
DerniereLigneFeuil1 = Cells(Rows.Count, 1).End(xlUp).Row
For NumLigneFeuil1 = 2 To DerniereLigneFeuil1
Sheets("ligne").Range("A" & NumLigneLigne).Value = Sheets("Feuil1").Range("A" & NumLigneFeuil1).Value
Sheets("ligne").Range("B" & NumLigneLigne).Value = Sheets("Feuil1").Range("B1").Value
Sheets("ligne").Range("C" & NumLigneLigne).Value = Sheets("Feuil1").Range("B" & NumLigneFeuil1).Value
NumLigneLigne = NumLigneLigne + 1
Sheets("ligne").Range("A" & NumLigneLigne).Value = Sheets("Feuil1").Range("A" & NumLigneFeuil1).Value
Sheets("ligne").Range("B" & NumLigneLigne).Value = Sheets("Feuil1").Range("C1").Value
Sheets("ligne").Range("C" & NumLigneLigne).Value = Sheets("Feuil1").Range("C" & NumLigneFeuil1).Value
NumLigneLigne = NumLigneLigne + 1
Sheets("ligne").Range("A" & NumLigneLigne).Value = Sheets("Feuil1").Range("A" & NumLigneFeuil1).Value
Sheets("ligne").Range("B" & NumLigneLigne).Value = Sheets("Feuil1").Range("D1").Value
Sheets("ligne").Range("C" & NumLigneLigne).Value = Sheets("Feuil1").Range("D" & NumLigneFeuil1).Value
NumLigneLigne = NumLigneLigne + 1
Next
End SubJe vous joins votre fichier avec le code inclus dans Feuil1.
Si cette réponse vous convient, n'oubliez pas de valider ma réponse.
Bonne journée!
Cindy
Bonjour,
Merci a tous les deux, j'ai compris et ne devrais plus avoir a vous embêter pour si peut