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 ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ???
Salut Patrick,
Remplace
Header:=xlGuess
par
Header:=xlYes
dans ta première macro.
Salutations,
Daniel M.
"Patrick" <patrick@nomico.org> wrote in message
news:0c1e01c3bf37$5adaefb0$a501280a@phx.gbl...
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 ???
"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 ???
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 ???
.
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" <patrick@nomico.org> wrote in message
news:0c1e01c3bf37$5adaefb0$a501280a@phx.gbl...
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
"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