Microsoft 365 VBA code pour inserer des lignes une condition

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 !

AEz

XLDnaute Nouveau
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
 

Pièces jointes

Dernière édition:
Bonjour
Ci joint ma solution (de ce que j'ai compris...)

A+François
Merci Beaucoup ! oui c'était l'idée, juste j'ai pas la colonne avce le type de montant (Affaire drcte ou autre). Mais je pense pouvoir rajouter
Par contre j'avais filtré sur l chiffre affaire et qd je fais la somme des 3 colonne dans la 1ere feuile je retrouve pas la même chose dans la feuille après traitement..
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
481
Réponses
0
Affichages
367
Réponses
2
Affichages
371
Réponses
5
Affichages
470
Réponses
1
Affichages
452
Retour