Formule excel étalement montant selon mois et durée

If Ws.Cells(i 1).Value = « DETTES FOURNISSEURS» Then
If Ws.Cells(i,17).Value <> 0 Then
If Ws.Cells(i 3).Value <> 0
Sheets(« Dettes & Créances »).Cells(Ligne1, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Créances »).Cells(Ligne1, 2).Value = Ws.Cells(i, 17).Value
Ligne1 = Ligne1+1
End If

A répéter dans tous les blocs DETTES FOURNISSEURS, DETTES SOCIALES, DETTES ETATS, CREANCES CLIENT, CREANCES ETAT en adaptant les variables Ligne exemple pour le 2° bloc :

ElseIf Ws.Cells(i 1).Value = « DETTES SOCIALES» Then
If Ws.Cells(i,17).Value <> 0 Then
If Ws.Cells(i 3).Value <> 0
Sheets(« Dettes & Créances »).Cells(Ligne2, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Créances »).Cells(Ligne2, 2).Value = Ws.Cells(i, 17).Value
Ligne2 = Ligne2+1
End If

J’ai remplacé Ligne1 par Ligne2

A toi de faire

Marche pas
j’ai ajouté un Then au bout du If Ws.Cells(i 3).Value <> 0 car sinon la ligne sort en rouge

il me met un message Next sans For , pour autant le For est présent

Private Sub Worksheet_Activate()
Dim D1%, i%, Ligne1%, Ligne2%, Ligne3%, Ligne4%, Ligne5%, Ws As Worksheet
Set Ws = Sheets(« Import balance »)
D1 = Ws.Range(« A » & Rows.Count).End(xlUp).Row
Ligne1 = 5
Ligne2 = 68
Ligne3 = 74
Ligne4 = 78
Ligne5 = 109

For i = 2 To D1

If Ws.Cells(i, 1).Value = « DETTES FOURNISSEURS » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne1, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Créances »).Cells(Ligne1, 2).Value = Ws.Cells(i, 17).Value
Ligne1 = Ligne1 + 1
End If

  ElseIf Ws.Cells(i, 1).Value = "DETTES SOCIALES" Then

If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne2, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Créances »).Cells(Ligne2, 2).Value = Ws.Cells(i, 17).Value
Ligne2 = Ligne2 + 1
End If

ElseIf Ws.Cells(i, 1).Value = « DETTES ETAT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne3, 1).Value = Ws.Cells(i, 3).Value
End If
If Ws.Cells(i, 17).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne3, 2).Value = Ws.Cells(i, 17).Value
End If
Ligne3 = Ligne3 + 1

ElseIf Ws.Cells(i, 1).Value = « CREANCES CLIENT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne4, 1).Value = Ws.Cells(i, 3).Value
End If
If Ws.Cells(i, 17).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne4, 2).Value = Ws.Cells(i, 17).Value
End If
Ligne4 = Ligne4 + 1

ElseIf Ws.Cells(i, 1).Value = "CREANCES ETAT" Then

If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne5, 1).Value = Ws.Cells(i, 3).Value
End If
If Ws.Cells(i, 17).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne5, 2).Value = Ws.Cells(i, 17).Value
End If
Ligne5 = Ligne5 + 1

 End If
Next i

Application.ScreenUpdating = True
End Sub

Les 2 premiers bloc que j’ai réalisé sont bon mais les autres ont été mal construit

ce que j’ai fais :

ElseIf Ws.Cells(i, 1).Value = « DETTES SOCIALES » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne2, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Créances »).Cells(Ligne2, 2).Value = Ws.Cells(i, 17).Value
Ligne2 = Ligne2 + 1
End If

Ce que tu as fais :

ElseIf Ws.Cells(i, 1).Value = « DETTES ETAT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne3, 1).Value = Ws.Cells(i, 3).Value
End If
If Ws.Cells(i, 17).Value <> 0 Then (en trop !!!)
Sheets(« Dettes & Créances »).Cells(Ligne3, 2).Value = Ws.Cells(i, 17).Value
End If
Ligne3 = Ligne3 + 1 (mal placé !!!)

Il falait mettre ainsi :

ElseIf Ws.Cells(i, 1).Value = « DETTES ETAT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Créances »).Cells(Ligne3, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Créances »).Cells(Ligne3, 2).Value = Ws.Cells(i, 17).Value
Ligne3 = Ligne3 + 1
End If

ce qui donne ce code dans son intégralité :

Dim D1%, i%, Ligne1%, Ligne2%, Ligne3%, Ligne4%, Ligne5%, Ws As Worksheet
Set Ws = Sheets(« Import balance »)
D1 = Ws.Range(« A » & Rows.Count).End(xlUp).Row
Ligne1 = 5
Ligne2 = 68
Ligne3 = 74
Ligne4 = 78
Ligne5 = 109
For i = 2 To D1
If Ws.Cells(i, 1).Value = « DETTES FOURNISSEURS » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Cr?ances »).Cells(Ligne1, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Cr?ances »).Cells(Ligne1, 2).Value = Ws.Cells(i, 17).Value
Ligne1 = Ligne1 + 1
End If
ElseIf Ws.Cells(i, 1).Value = « DETTES SOCIALES » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Cr?ances »).Cells(Ligne2, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Cr?ances »).Cells(Ligne2, 2).Value = Ws.Cells(i, 17).Value
Ligne2 = Ligne2 + 1
End If
ElseIf Ws.Cells(i, 1).Value = « DETTES ETAT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Cr?ances »).Cells(Ligne3, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Cr?ances »).Cells(Ligne3, 2).Value = Ws.Cells(i, 17).Value
Ligne3 = Ligne3 + 1
End If
ElseIf Ws.Cells(i, 1).Value = « CREANCES CLIENT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Cr?ances »).Cells(Ligne4, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Cr?ances »).Cells(Ligne4, 2).Value = Ws.Cells(i, 17).Value
Ligne4 = Ligne4 + 1
End If
ElseIf Ws.Cells(i, 1).Value = « CREANCES ETAT » Then
If Ws.Cells(i, 17).Value <> 0 Then
If Ws.Cells(i, 3).Value <> 0 Then
Sheets(« Dettes & Cr?ances »).Cells(Ligne5, 1).Value = Ws.Cells(i, 3).Value
End If
Sheets(« Dettes & Cr?ances »).Cells(Ligne5, 2).Value = Ws.Cells(i, 17).Value
Ligne5 = Ligne5 + 1
End If
End If
Next i
Application.ScreenUpdating = True

et là plus de bug Next sans For

Récupères ces lignes intégrales (attention aux guillemets à ressaisir au clavier)
Fais des essais et dis moi

tout fonctionne enfin; merci beaucoup

sans vouloir abuser ; j’ai un autres sujet en cours que ton homologue n’arrive pas à résoudre
le sujet se nomme convertir un csv illogique
tu peux jeter un oeil?

Je n aime pas trop interférer sur les échanges en cours
Je n apporte ma contribution que si celui ci est en difficulté pour des propositions suceptibles de le faire avancer
De plus ton interlocuteur à toutes les capacités pour mener à bien ta demande
Attendons ses propositions

ok merci quand même

sinon je viens d’ouvrir un sujet 100 % excel sans vba sur une recherche v sur plusieurs matrice
personne n’a répondu pour le moment si ça t’intéresse

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.