bnjour, j'ai un fichier excel avec plusieurs colonnes, mais je vous met ici celles dont j'ai besoin
mon code copie les 3 premières colonnes sur une autre feuille. les autres colonnes de montant AF direct Acceptation et Coass.
voilà ma requête.
pour la 1ère ligne si les 3 colonnes de montants sont non nulles, je veux qu'il crèe une ligne pour chacune en mettant le libellé dans une colonne type de montant et le montant qui correspond.
Par exemple si AF direct Acceptation et Coass sont non nulles
Nom code Ass Type montant Montant
xx aa bb AF direct montant AF
xx aa bb acceptation montant acceptation
xx aa bb coass montant coass
puis il passe à la ligne suivant (les 3 premières colonnes sont différentes d'une ligne à l'autre)
Pour l'instant voici le codequi ne fonctionne pas comme je souhaite. je crois un problème sur les compteurs de ligne
Set WS = ThisWorkbook.Sheets("Selection données")
Set WS2 = ThisWorkbook.Sheets("Traitement réferentiel")
Dim i, n As Integer
Dim Nbline As Integer
With WS
Nbline = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For i = 1 To Nbline
WS2.Cells(i, 1) = WS.Range("A" & i)
WS2.Cells(i, 2) = WS.Range("D" & i)
WS2.Cells(i, 3) = WS.Range("I" & i)
If (WS.Range("F" & i) <> 0) And (WS.Range("G" & i) <> 0) And (WS.Range("H" & i) <> 0) Then
WS2.Cells(i, 4) = WS.Range("F1")
WS2.Cells(i, 5) = WS.Range("F" & i)
Range("A" & i + 2).EntireRow.Insert
Range(Cells(i + 2, 1), Cells(i + 2, 3)).Value = Range(Cells(i + 2 - 1, 1), Cells(i + 2 - 1, 3)).Value
WS2.Cells(i + 2, 4) = WS.Range("G1")
WS2.Cells(i + 2, 5) = WS.Range("G" & i + 1)
Range("A" & i + 3).EntireRow.Insert
Range(Cells(i + 3, 1), Cells(i + 3, 3)).Value = Range(Cells(i + 3 - 1, 1), Cells(i + 3 - 1, 3)).Value
WS2.Cells(i + 3, 4) = WS.Range("H1")
WS2.Cells(i + 3, 5) = WS.Range("H" & i + 1)
End If
Merci d'avance pour votre aide
mon code copie les 3 premières colonnes sur une autre feuille. les autres colonnes de montant AF direct Acceptation et Coass.
voilà ma requête.
pour la 1ère ligne si les 3 colonnes de montants sont non nulles, je veux qu'il crèe une ligne pour chacune en mettant le libellé dans une colonne type de montant et le montant qui correspond.
Par exemple si AF direct Acceptation et Coass sont non nulles
Nom code Ass Type montant Montant
xx aa bb AF direct montant AF
xx aa bb acceptation montant acceptation
xx aa bb coass montant coass
puis il passe à la ligne suivant (les 3 premières colonnes sont différentes d'une ligne à l'autre)
Pour l'instant voici le codequi ne fonctionne pas comme je souhaite. je crois un problème sur les compteurs de ligne
Set WS = ThisWorkbook.Sheets("Selection données")
Set WS2 = ThisWorkbook.Sheets("Traitement réferentiel")
Dim i, n As Integer
Dim Nbline As Integer
With WS
Nbline = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For i = 1 To Nbline
WS2.Cells(i, 1) = WS.Range("A" & i)
WS2.Cells(i, 2) = WS.Range("D" & i)
WS2.Cells(i, 3) = WS.Range("I" & i)
If (WS.Range("F" & i) <> 0) And (WS.Range("G" & i) <> 0) And (WS.Range("H" & i) <> 0) Then
WS2.Cells(i, 4) = WS.Range("F1")
WS2.Cells(i, 5) = WS.Range("F" & i)
Range("A" & i + 2).EntireRow.Insert
Range(Cells(i + 2, 1), Cells(i + 2, 3)).Value = Range(Cells(i + 2 - 1, 1), Cells(i + 2 - 1, 3)).Value
WS2.Cells(i + 2, 4) = WS.Range("G1")
WS2.Cells(i + 2, 5) = WS.Range("G" & i + 1)
Range("A" & i + 3).EntireRow.Insert
Range(Cells(i + 3, 1), Cells(i + 3, 3)).Value = Range(Cells(i + 3 - 1, 1), Cells(i + 3 - 1, 3)).Value
WS2.Cells(i + 3, 4) = WS.Range("H1")
WS2.Cells(i + 3, 5) = WS.Range("H" & i + 1)
End If
Merci d'avance pour votre aide
Pièces jointes
Dernière édition: