Réorganisation cellule

4test2.xlsm (19.57 Ko)
4test2.xlsm (19.57 Ko)
4test2.xlsm (19.57 Ko)

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 Sub

Bonjour,

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 Sub

Je 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

6test2.xlsm (19.48 Ko)

Bonjour,

Merci a tous les deux, j'ai compris et ne devrais plus avoir a vous embêter pour si peut

Rechercher des sujets similaires à "reorganisation"