Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme de Tri

2 réponses
Avatar
Patrick
Debutant relatif dans le VBA Excel j'ai un probleme
existentiel sur une macro de tri que j'utilise depuis
longtemps :

1 - la macro suivante marche tres bien dans toutes mes
feuilles excel pour faire des tri a la demande sur les
colonnes voulues

Sub TriDateFin()
Application.ScreenUpdating = False
Worksheets("Suivi PN Financier").Range("J1").Sort _
Key1:=Worksheets("Suivi PN FInancier").Range("J2"), _
Order1:=xlDescending, Header:=xlGuess
End Sub

2 - Depuis que j'ai fait fonctionner la macro ci dessous
( essentiellement aller chercher des donnees dans les
autres feuilles du classeur pour mettre a jour ma feuille
de controle )

Sub NewDuExploitant()
' PN : derniere modif le 9/12/03
' fonctionne sur les montants regles uniquement
' a modifier pour tenir compte du du en fonction des
reglements

Dim Exploitant As String, DuExploitant As Double, Comm As
Double, Test As String
Dim Nr As Integer, Ne As Integer, CdeEnCours As String,
Paiement1 As Double, Paiement2 As Double, Paiement3 As
Double
Dim i As Integer, j As Integer, k As Integer, Na As
Integer, Regie As Double, Actu As Double, Tech As Double,
Fond As Integer
Dim Paye As Double, Couleur As Integer, Test1 As String



Application.ScreenUpdating = False
Application.EnableEvents = False
' mise a jour des infos de paiements
Retard
' essai pour contourner le pbm du tri ??
TriCdeFin
Sheets("Base Exploitant").Select
Nr = ActiveSheet.UsedRange.Rows.Count
For i = 2 To Nr
Exploitant = Cells(i, 1)
Sheets("Suivi PN Financier").Select
' tri sur le no de cde pour classer dans le bon ordre
' TriCdeFin
Ne = ActiveSheet.UsedRange.Rows.Count
For j = 2 To Ne
' test sur le diffuseur
Test = Cells(j, 7)
If Test <> Exploitant Then GoTo Line100
' initialisation et traitement de la commande
CdeEnCours = Cells(j, 4)
Sheets("Suivi PN Admin").Select
Na = ActiveSheet.UsedRange.Rows.Count
For k = 2 To Na
Test1 = Cells(k, 1).Value
If Test1 = CdeEnCours Then
Regie = Cells(k, 5) * 1.196
Tech = Cells(k, 6) * 1.196
Actu = Cells(k, 7) * 1.196
GoTo Line10
End If
Next k

Line10:
Sheets("Suivi PN Financier").Select
Paye = Cells(j, 6).Value
Cells(j, 6).Select
Fond = Selection.Interior.ColorIndex
Couleur = Selection.Font.ColorIndex
' verification du paiement par le client
If Fond <> 34 Then GoTo Line100
If Fond = 34 And Couleur = 3 Then GoTo Line100
Paiement1 = Round(Regie / 2 + Tech / 2, 2)
If Paye = Paiement1 Then Cells(j, 14) = Regie / 2
Paiement2 = Round(Tech / 2, 2)
If Paye = Paiement2 Then Cells(j, 14) = 0
Paiement3 = Round((Actu + Regie / 2) / 5, 2)
If Paye = Paiement3 Then Cells(j, 14) = (Regie /
2 / 5)
DuExploitant = DuExploitant + Cells(j, 14)

Line100:
Next j
' TriDateFin
Sheets("Base Exploitant").Select
Comm = Cells(i, 6)
Cells(i, 10) = DuExploitant * Comm
DuExploitant = 0
Next i
Application.EnableEvents = True
End Sub

impossible de faire fonctionner normalement cette macro
sur la feuille en question : elle prends systematiquement
la ligne 1 en compte dans le tri ( la ligne header ) et
me la mets donc en derniere position.

Je ne comprends pas pourquoi ? La meme macro fonctionne
tres bien dans les autres feuilles de ce classeur ????

Je suppose que l'execution de la macro 2 a change quelque
chose, mais je ne vois pas quoi ?

Quelqu'un pourrait il m'aider a comprendre pourquoi cette
macro de tri ne fonctionne plus ???

2 réponses

Avatar
Daniel.M
Salut Patrick,

Remplace
Header:=xlGuess
par
Header:=xlYes

dans ta première macro.

Salutations,

Daniel M.

"Patrick" wrote in message
news:0c1e01c3bf37$5adaefb0$
Debutant relatif dans le VBA Excel j'ai un probleme
existentiel sur une macro de tri que j'utilise depuis
longtemps :

1 - la macro suivante marche tres bien dans toutes mes
feuilles excel pour faire des tri a la demande sur les
colonnes voulues

Sub TriDateFin()
Application.ScreenUpdating = False
Worksheets("Suivi PN Financier").Range("J1").Sort _
Key1:=Worksheets("Suivi PN FInancier").Range("J2"), _
Order1:=xlDescending, Header:=xlGuess
End Sub

2 - Depuis que j'ai fait fonctionner la macro ci dessous
( essentiellement aller chercher des donnees dans les
autres feuilles du classeur pour mettre a jour ma feuille
de controle )

Sub NewDuExploitant()
' PN : derniere modif le 9/12/03
' fonctionne sur les montants regles uniquement
' a modifier pour tenir compte du du en fonction des
reglements

Dim Exploitant As String, DuExploitant As Double, Comm As
Double, Test As String
Dim Nr As Integer, Ne As Integer, CdeEnCours As String,
Paiement1 As Double, Paiement2 As Double, Paiement3 As
Double
Dim i As Integer, j As Integer, k As Integer, Na As
Integer, Regie As Double, Actu As Double, Tech As Double,
Fond As Integer
Dim Paye As Double, Couleur As Integer, Test1 As String



Application.ScreenUpdating = False
Application.EnableEvents = False
' mise a jour des infos de paiements
Retard
' essai pour contourner le pbm du tri ??
TriCdeFin
Sheets("Base Exploitant").Select
Nr = ActiveSheet.UsedRange.Rows.Count
For i = 2 To Nr
Exploitant = Cells(i, 1)
Sheets("Suivi PN Financier").Select
' tri sur le no de cde pour classer dans le bon ordre
' TriCdeFin
Ne = ActiveSheet.UsedRange.Rows.Count
For j = 2 To Ne
' test sur le diffuseur
Test = Cells(j, 7)
If Test <> Exploitant Then GoTo Line100
' initialisation et traitement de la commande
CdeEnCours = Cells(j, 4)
Sheets("Suivi PN Admin").Select
Na = ActiveSheet.UsedRange.Rows.Count
For k = 2 To Na
Test1 = Cells(k, 1).Value
If Test1 = CdeEnCours Then
Regie = Cells(k, 5) * 1.196
Tech = Cells(k, 6) * 1.196
Actu = Cells(k, 7) * 1.196
GoTo Line10
End If
Next k

Line10:
Sheets("Suivi PN Financier").Select
Paye = Cells(j, 6).Value
Cells(j, 6).Select
Fond = Selection.Interior.ColorIndex
Couleur = Selection.Font.ColorIndex
' verification du paiement par le client
If Fond <> 34 Then GoTo Line100
If Fond = 34 And Couleur = 3 Then GoTo Line100
Paiement1 = Round(Regie / 2 + Tech / 2, 2)
If Paye = Paiement1 Then Cells(j, 14) = Regie / 2
Paiement2 = Round(Tech / 2, 2)
If Paye = Paiement2 Then Cells(j, 14) = 0
Paiement3 = Round((Actu + Regie / 2) / 5, 2)
If Paye = Paiement3 Then Cells(j, 14) = (Regie /
2 / 5)
DuExploitant = DuExploitant + Cells(j, 14)

Line100:
Next j
' TriDateFin
Sheets("Base Exploitant").Select
Comm = Cells(i, 6)
Cells(i, 10) = DuExploitant * Comm
DuExploitant = 0
Next i
Application.EnableEvents = True
End Sub

impossible de faire fonctionner normalement cette macro
sur la feuille en question : elle prends systematiquement
la ligne 1 en compte dans le tri ( la ligne header ) et
me la mets donc en derniere position.

Je ne comprends pas pourquoi ? La meme macro fonctionne
tres bien dans les autres feuilles de ce classeur ????

Je suppose que l'execution de la macro 2 a change quelque
chose, mais je ne vois pas quoi ?

Quelqu'un pourrait il m'aider a comprendre pourquoi cette
macro de tri ne fonctionne plus ???




Avatar
Patrick
Salut Daniel

Un grand merci !

Patrick


-----Message d'origine-----
Salut Patrick,

Remplace
Header:=xlGuess
par
Header:=xlYes

dans ta première macro.

Salutations,

Daniel M.

"Patrick" wrote in message
news:0c1e01c3bf37$5adaefb0$
Debutant relatif dans le VBA Excel j'ai un probleme
existentiel sur une macro de tri que j'utilise depuis
longtemps :

1 - la macro suivante marche tres bien dans toutes mes
feuilles excel pour faire des tri a la demande sur les
colonnes voulues

Sub TriDateFin()
Application.ScreenUpdating = False
Worksheets("Suivi PN Financier").Range("J1").Sort _
Key1:=Worksheets("Suivi PN FInancier").Range("J2"), _
Order1:=xlDescending, Header:=xlGuess
End Sub

2 - Depuis que j'ai fait fonctionner la macro ci
dessous


( essentiellement aller chercher des donnees dans les
autres feuilles du classeur pour mettre a jour ma
feuille


de controle )

Sub NewDuExploitant()
' PN : derniere modif le 9/12/03
' fonctionne sur les montants regles uniquement
' a modifier pour tenir compte du du en fonction des
reglements

Dim Exploitant As String, DuExploitant As Double, Comm
As


Double, Test As String
Dim Nr As Integer, Ne As Integer, CdeEnCours As String,
Paiement1 As Double, Paiement2 As Double, Paiement3 As
Double
Dim i As Integer, j As Integer, k As Integer, Na As
Integer, Regie As Double, Actu As Double, Tech As
Double,


Fond As Integer
Dim Paye As Double, Couleur As Integer, Test1 As String



Application.ScreenUpdating = False
Application.EnableEvents = False
' mise a jour des infos de paiements
Retard
' essai pour contourner le pbm du tri ??
TriCdeFin
Sheets("Base Exploitant").Select
Nr = ActiveSheet.UsedRange.Rows.Count
For i = 2 To Nr
Exploitant = Cells(i, 1)
Sheets("Suivi PN Financier").Select
' tri sur le no de cde pour classer dans le bon
ordre


' TriCdeFin
Ne = ActiveSheet.UsedRange.Rows.Count
For j = 2 To Ne
' test sur le diffuseur
Test = Cells(j, 7)
If Test <> Exploitant Then GoTo Line100
' initialisation et traitement de la commande
CdeEnCours = Cells(j, 4)
Sheets("Suivi PN Admin").Select
Na = ActiveSheet.UsedRange.Rows.Count
For k = 2 To Na
Test1 = Cells(k, 1).Value
If Test1 = CdeEnCours Then
Regie = Cells(k, 5) * 1.196
Tech = Cells(k, 6) * 1.196
Actu = Cells(k, 7) * 1.196
GoTo Line10
End If
Next k

Line10:
Sheets("Suivi PN Financier").Select
Paye = Cells(j, 6).Value
Cells(j, 6).Select
Fond = Selection.Interior.ColorIndex
Couleur = Selection.Font.ColorIndex
' verification du paiement par le client
If Fond <> 34 Then GoTo Line100
If Fond = 34 And Couleur = 3 Then GoTo Line100
Paiement1 = Round(Regie / 2 + Tech / 2, 2)
If Paye = Paiement1 Then Cells(j, 14) =
Regie / 2


Paiement2 = Round(Tech / 2, 2)
If Paye = Paiement2 Then Cells(j, 14) = 0
Paiement3 = Round((Actu + Regie / 2) / 5, 2)
If Paye = Paiement3 Then Cells(j, 14) =
(Regie /


2 / 5)
DuExploitant = DuExploitant + Cells(j, 14)

Line100:
Next j
' TriDateFin
Sheets("Base Exploitant").Select
Comm = Cells(i, 6)
Cells(i, 10) = DuExploitant * Comm
DuExploitant = 0
Next i
Application.EnableEvents = True
End Sub

impossible de faire fonctionner normalement cette macro
sur la feuille en question : elle prends
systematiquement


la ligne 1 en compte dans le tri ( la ligne header ) et
me la mets donc en derniere position.

Je ne comprends pas pourquoi ? La meme macro fonctionne
tres bien dans les autres feuilles de ce classeur ????

Je suppose que l'execution de la macro 2 a change
quelque


chose, mais je ne vois pas quoi ?

Quelqu'un pourrait il m'aider a comprendre pourquoi
cette


macro de tri ne fonctionne plus ???





.