AutomaVB
Résolu
cindy001
Messages postés
102
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je veux terminer cette macro mais je n'y arrive pas:
ce que je veux faire c ajouter un p au début de la macro que je peux faire varier(dans la 1ère macro ci dessous c le cas particulier ou p=60 de DC à FJ y'a 60 colonnes comme de AU à DC, et pour la deuxième en dessou c p=40), ca serait plus facile de partir de la dernière colonne(celle ou ya les derniers chiffres dans la Feuil1 du fichier ci-joint:
http://www.cijoint.fr/cjlink.php?file=cj201101/cijgMdNsm1.xls
J'ai essayé avec la fonction Offset mais j'arrive pas.
Donc avec cette macro c le cas particulier ou p=60
Sub CCM()
Const imax = 1200
Dim lig As Long
Dim f1 As String, f2 As String, f3 As String, f4 As String
lig = 20
For i = 2 To imax Step 2
f1 = "=product('Coef Mul Titre Large Ret1m'!$DC$" & lig & ":$FJ$" & lig & ")-1"
f2 = "=Feuil1!$DB$" & lig
f3 = "=product('Coef Mul Titre Large Ret1m'!$AU$" & lig & ":$DC$" & lig & ")-1"
f4 = "=Feuil1!$AT$" & lig
Range("A" & i).Formula = f1
Range("B" & i).Formula = f2
Range("A" & (i + 1)).Formula = f3
Range("B" & (i + 1)).Formula = f4
lig = lig + 1
Next i
End Sub
Avec celle ci c'est le cas particulier ou p=40(résultat dans l'onglet p=40)
Sub CCM()
'cas p = 40
Const imax = 1800
Dim lig As Long
Dim f1 As String, f2 As String, f3 As String, f4 As String, f5 As String, f6 As String
lig = 20
For i = 2 To imax Step 3
f1 = "=product('Coef Mul Titre Large Ret1m'!$DW$" & lig & ":$FJ$" & lig & ")-1"
f2 = "=Feuil1!$DV$" & lig
f3 = "=product('Coef Mul Titre Large Ret1m'!$CJ$" & lig & ":$DW$" & lig & ")-1"
f4 = "=Feuil1!$CI$" & lig
f5 = "=product('Coef Mul Titre Large Ret1m'!$AW$" & lig & ":$CJ$" & lig & ")-1"
f6 = "=Feuil1!$AV$" & lig
Range("A" & i).Formula = f1
Range("B" & i).Formula = f2
Range("A" & (i + 1)).Formula = f3
Range("B" & (i + 1)).Formula = f4
Range("A" & (i + 2)).Formula = f5
Range("B" & (i + 2)).Formula = f6
lig = lig + 1
Next i
End Sub
Merci d'avance pour votre aide
Je veux terminer cette macro mais je n'y arrive pas:
ce que je veux faire c ajouter un p au début de la macro que je peux faire varier(dans la 1ère macro ci dessous c le cas particulier ou p=60 de DC à FJ y'a 60 colonnes comme de AU à DC, et pour la deuxième en dessou c p=40), ca serait plus facile de partir de la dernière colonne(celle ou ya les derniers chiffres dans la Feuil1 du fichier ci-joint:
http://www.cijoint.fr/cjlink.php?file=cj201101/cijgMdNsm1.xls
J'ai essayé avec la fonction Offset mais j'arrive pas.
Donc avec cette macro c le cas particulier ou p=60
Sub CCM()
Const imax = 1200
Dim lig As Long
Dim f1 As String, f2 As String, f3 As String, f4 As String
lig = 20
For i = 2 To imax Step 2
f1 = "=product('Coef Mul Titre Large Ret1m'!$DC$" & lig & ":$FJ$" & lig & ")-1"
f2 = "=Feuil1!$DB$" & lig
f3 = "=product('Coef Mul Titre Large Ret1m'!$AU$" & lig & ":$DC$" & lig & ")-1"
f4 = "=Feuil1!$AT$" & lig
Range("A" & i).Formula = f1
Range("B" & i).Formula = f2
Range("A" & (i + 1)).Formula = f3
Range("B" & (i + 1)).Formula = f4
lig = lig + 1
Next i
End Sub
Avec celle ci c'est le cas particulier ou p=40(résultat dans l'onglet p=40)
Sub CCM()
'cas p = 40
Const imax = 1800
Dim lig As Long
Dim f1 As String, f2 As String, f3 As String, f4 As String, f5 As String, f6 As String
lig = 20
For i = 2 To imax Step 3
f1 = "=product('Coef Mul Titre Large Ret1m'!$DW$" & lig & ":$FJ$" & lig & ")-1"
f2 = "=Feuil1!$DV$" & lig
f3 = "=product('Coef Mul Titre Large Ret1m'!$CJ$" & lig & ":$DW$" & lig & ")-1"
f4 = "=Feuil1!$CI$" & lig
f5 = "=product('Coef Mul Titre Large Ret1m'!$AW$" & lig & ":$CJ$" & lig & ")-1"
f6 = "=Feuil1!$AV$" & lig
Range("A" & i).Formula = f1
Range("B" & i).Formula = f2
Range("A" & (i + 1)).Formula = f3
Range("B" & (i + 1)).Formula = f4
Range("A" & (i + 2)).Formula = f5
Range("B" & (i + 2)).Formula = f6
lig = lig + 1
Next i
End Sub
Merci d'avance pour votre aide
30 réponses
C pour ca que j'avais dis on part de FJ, et on bouge de 6 en 6, le découpage AU:FJ j'en ai parlé pour me faire comprendre car au début si tu trapeles j'avais du mal.
Mais pour le cas 24, 24*5=120 donc on ira bien jusqu'à AU cad 120 colonnes avant FJ, pour 60 c pareil, car c aussi un multiple de 120, 60*2, mais tous les autres cas 12, 18,(24 on l' déja) 30, 36, 42, 48, et 54 on s'arretera donc pas en AU(avant) mais c pas grave le but c d'aller aussi loin qu'on peut avant FJ, donc jusqu'à qu'on à plus de chiffre dans la feuille Feuille1, donc jusqu'à qu'on a plus de chiffres pour calculer a1 et b1.
Mais je pense que j'y arriverai, jpense qu'avec ta macro c facilement modifiable.
Premièrement, jcommencerai par remplacer Const colder = 166 par Const colder = DernièreColonne, en lui fesant calculer automatiquement ce DernièreColonne.....
Jte tiendrai au courant car j'ai pas excel chez moi.
Merci encore bonne fin de we
Mais pour le cas 24, 24*5=120 donc on ira bien jusqu'à AU cad 120 colonnes avant FJ, pour 60 c pareil, car c aussi un multiple de 120, 60*2, mais tous les autres cas 12, 18,(24 on l' déja) 30, 36, 42, 48, et 54 on s'arretera donc pas en AU(avant) mais c pas grave le but c d'aller aussi loin qu'on peut avant FJ, donc jusqu'à qu'on à plus de chiffre dans la feuille Feuille1, donc jusqu'à qu'on a plus de chiffres pour calculer a1 et b1.
Mais je pense que j'y arriverai, jpense qu'avec ta macro c facilement modifiable.
Premièrement, jcommencerai par remplacer Const colder = 166 par Const colder = DernièreColonne, en lui fesant calculer automatiquement ce DernièreColonne.....
Jte tiendrai au courant car j'ai pas excel chez moi.
Merci encore bonne fin de we
re
aïe, c'est la premiere fois que tu me dis qu'on peut deborder par la gauche (avant la colonne 47), moi qui me faisais du souci pour la relation entre p, la taille des paquets et le nombre fatidique 120 !!!!
j'ai amenage un peu pour que ça reponde a la nouvelle question,
j'ai mis toute l'initialisation des données dans la feuille F0, ce sera a toi de remplir selon les besoins avant de lancer la creation de la feuille,
RQ1. la valeur de p est calculée donc ne pas y toucher.
RQ2. si tu dois modifier d'autres données, tu peux completer la feuille F0 et bien sur la procedure CreationFeuille (Module 7)
RQ3. J'ai traité le cas p = 10 qui correspond à ton Cas 5, ça colle
http://www.cijoint.fr/cjlink.php?file=cj201101/cij3p48aVN.xls
RQ4. dans ton Cas2, les paquets ne sont pas disjoints
ligne 20 > C107-166
ligne 21 > C47-C107
etc ..
alors que dans ton cas 5 elle sont bien disjointes
ligne 20 > C155-166
ligne 21 > C143-C154
etc ..
???
bonne suite
aïe, c'est la premiere fois que tu me dis qu'on peut deborder par la gauche (avant la colonne 47), moi qui me faisais du souci pour la relation entre p, la taille des paquets et le nombre fatidique 120 !!!!
j'ai amenage un peu pour que ça reponde a la nouvelle question,
j'ai mis toute l'initialisation des données dans la feuille F0, ce sera a toi de remplir selon les besoins avant de lancer la creation de la feuille,
RQ1. la valeur de p est calculée donc ne pas y toucher.
RQ2. si tu dois modifier d'autres données, tu peux completer la feuille F0 et bien sur la procedure CreationFeuille (Module 7)
RQ3. J'ai traité le cas p = 10 qui correspond à ton Cas 5, ça colle
http://www.cijoint.fr/cjlink.php?file=cj201101/cij3p48aVN.xls
RQ4. dans ton Cas2, les paquets ne sont pas disjoints
ligne 20 > C107-166
ligne 21 > C47-C107
etc ..
alors que dans ton cas 5 elle sont bien disjointes
ligne 20 > C155-166
ligne 21 > C143-C154
etc ..
???
bonne suite
jréponds pas encore parceque j'essai de la terminer par rapport à
puis j'aimerai ensuite les cas 54, 48, 42, 36 jusqu'à 12(12 c le dernier cas que j'ai dis ou on coupe en 10(120/10)......on bouge de 6 en 6 à partir de FJ
'si on bouge de 6 en 6, pour moi, on coupe en p = 20 (120/20 = 6) , si on coupe en 20 c le cas 6, puis j'essai d'ajouter la boucle: for p = 6 To 60 Step 6 pour tous les autres cas'
en fait j'essaie de partir de la dernière collone que j'ai fais calculer automatiquement en fesant:
With Sheets("Coef Mul Titre Large Ret1m")
LastColumn = .Cells(20, .Columns.Count).End(xlToLeft).Column
End With
et de là faire le décalage de 6 en 6 jusqu'à ce qu'il y a plus de chiffre(dans la feuille Coef Mul Titre Large Ret1m) pour faire le product dans les formules.
jte réponds quand je peux, si j'arrive ou pas.
puis j'aimerai ensuite les cas 54, 48, 42, 36 jusqu'à 12(12 c le dernier cas que j'ai dis ou on coupe en 10(120/10)......on bouge de 6 en 6 à partir de FJ
'si on bouge de 6 en 6, pour moi, on coupe en p = 20 (120/20 = 6) , si on coupe en 20 c le cas 6, puis j'essai d'ajouter la boucle: for p = 6 To 60 Step 6 pour tous les autres cas'
en fait j'essaie de partir de la dernière collone que j'ai fais calculer automatiquement en fesant:
With Sheets("Coef Mul Titre Large Ret1m")
LastColumn = .Cells(20, .Columns.Count).End(xlToLeft).Column
End With
et de là faire le décalage de 6 en 6 jusqu'à ce qu'il y a plus de chiffre(dans la feuille Coef Mul Titre Large Ret1m) pour faire le product dans les formules.
jte réponds quand je peux, si j'arrive ou pas.
Sub Window()
With Sheets("Coef Mul Titre Large Ret1m")
LastColumn = .Cells(20, .Columns.Count).End(xlToLeft).Column
End With
LastLine = Range("Feuille1!A65536").End(xlUp).Row
Const co5 = 5
Const co6 = 6
colder = LastColumn
Const FCoeff = "'Coef Mul Titre Large Ret1m'"
Const f1 = "'Feuille1'"
Const ideb = 20
Dim lig As Long, col1 As Long, col2 As Long, i As Long, j As Long, pp As Long
Dim a1 As String, a2
Dim NomFeuille As String
Dim NbFeuilles As Long
For p = 3 To 10 Step 1
' creation de la feuille p
NomFeuille = "p=" & (p * 6)
NbFeuilles = Sheets.Count
Sheets.Add
ActiveSheet.Name = NomFeuille
Sheets(NomFeuille).Move after:=Sheets(Sheets.Count)
' remplir la feuille p
lig = 20
'imax = (p * LastLine) - ((p - 1) * 19)
pp = 6 * p
i = ideb
'While i < imax
col1 = colder - pp + 1
col2 = colder
For j = 1 To p
a1 = "=product(" & FCoeff & "!R" & lig & "C" & col1 & ":" & "R" & lig & "C" & col2 & ")-1"
b1 = "=" & f1 & "!R" & lig & "C" & col1 - 1
Cells(i, co1).FormulaR1C1 = a1
Cells(i, co2).FormulaR1C1 = b1
i = i + 1
col1 = col1 - pp
col2 = col2 - pp
Next j
lig = lig + 1
'Wend
Next p
End Sub
Alors voila ce qui faudrait mais j'ai un bug depuis hier que j'arive pas à corriger
si jreprends ton commentaire:si on bouge de 6 en 6, pour moi, on coupe en p = 20 (120/20 = 6)
on bouge de 6 en 6 ton sens ici ca veut dire en colonne dans la feuille Coef Mul Titre Large Ret1m, mais moi je voulais dire ca depuis le début: For p = 3 To 10 Step 1
' creation de la feuille p
NomFeuille = "p=" & (p * 6)
Y'a que ca comme bug le reste ca n'a pas l'air d'etre faux
Merci encore d'etre rester avec moi.
Cindy001
With Sheets("Coef Mul Titre Large Ret1m")
LastColumn = .Cells(20, .Columns.Count).End(xlToLeft).Column
End With
LastLine = Range("Feuille1!A65536").End(xlUp).Row
Const co5 = 5
Const co6 = 6
colder = LastColumn
Const FCoeff = "'Coef Mul Titre Large Ret1m'"
Const f1 = "'Feuille1'"
Const ideb = 20
Dim lig As Long, col1 As Long, col2 As Long, i As Long, j As Long, pp As Long
Dim a1 As String, a2
Dim NomFeuille As String
Dim NbFeuilles As Long
For p = 3 To 10 Step 1
' creation de la feuille p
NomFeuille = "p=" & (p * 6)
NbFeuilles = Sheets.Count
Sheets.Add
ActiveSheet.Name = NomFeuille
Sheets(NomFeuille).Move after:=Sheets(Sheets.Count)
' remplir la feuille p
lig = 20
'imax = (p * LastLine) - ((p - 1) * 19)
pp = 6 * p
i = ideb
'While i < imax
col1 = colder - pp + 1
col2 = colder
For j = 1 To p
a1 = "=product(" & FCoeff & "!R" & lig & "C" & col1 & ":" & "R" & lig & "C" & col2 & ")-1"
b1 = "=" & f1 & "!R" & lig & "C" & col1 - 1
Cells(i, co1).FormulaR1C1 = a1
Cells(i, co2).FormulaR1C1 = b1
i = i + 1
col1 = col1 - pp
col2 = col2 - pp
Next j
lig = lig + 1
'Wend
Next p
End Sub
Alors voila ce qui faudrait mais j'ai un bug depuis hier que j'arive pas à corriger
si jreprends ton commentaire:si on bouge de 6 en 6, pour moi, on coupe en p = 20 (120/20 = 6)
on bouge de 6 en 6 ton sens ici ca veut dire en colonne dans la feuille Coef Mul Titre Large Ret1m, mais moi je voulais dire ca depuis le début: For p = 3 To 10 Step 1
' creation de la feuille p
NomFeuille = "p=" & (p * 6)
Y'a que ca comme bug le reste ca n'a pas l'air d'etre faux
Merci encore d'etre rester avec moi.
Cindy001
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c ca que je veux, j'arrive pas à débuger mais c exactement ce que je veux:
Sub AutomaVB()
With Sheets("Coef Mul Titre Large Ret1m")
LastColumn = .Cells(20, .Columns.Count).End(xlToLeft).Column
End With
Const co1 = 2
Const co2 = 3
colder = LastColumn
Const FCoeff = "'Coef Mul Titre Large Ret1m'"
Const f1 = "'Feuille1'"
Const ideb = 20
Dim lig As Long, col1 As Long, col2 As Long, i As Long, j As Long, pp As Long
Dim a1 As String, a2
Dim NomFeuille As String
Dim NbFeuilles As Long
For p = 3 To 10 Step 1
' creation de la feuille p
NomFeuille = "p=" & (p * 6)
NbFeuilles = Sheets.Count
Sheets.Add
ActiveSheet.Name = NomFeuille
Sheets(NomFeuille).Move after:=Sheets(Sheets.Count)
' remplir la feuille p
lig = 20
imax = 70
pp = 6 * p
i = ideb
While i < imax
col1 = colder - pp + 1
col2 = colder
'For j = 1 To (LastColumn - 13) / pp j'aimerai avoir ca _
mais en prenant l'entier le plus proche de (LastColumn - 13) / pp pour cette boucle mais comme j'arrive pas _
je rajoute un While
While j <= (LastColumn - 13) / pp
a1 = "=product(" & FCoeff & "!R" & lig & "C" & col1 & ":" & "R" & lig & "C" & col2 & ")-1"
b1 = "=" & f1 & "!R" & lig & "C" & col1 - 1
j = j + 1
Cells(i, co1).FormulaR1C1 = a1
Cells(i, co2).FormulaR1C1 = b1
i = i + 1
col1 = col1 - pp
col2 = col2 - pp
Wend
'Next j
lig = lig + 1'Il est ici le bug
Wend
Next p
End Sub
Merci c fini c juste un problème de nug maintenant. Merci
Sub AutomaVB()
With Sheets("Coef Mul Titre Large Ret1m")
LastColumn = .Cells(20, .Columns.Count).End(xlToLeft).Column
End With
Const co1 = 2
Const co2 = 3
colder = LastColumn
Const FCoeff = "'Coef Mul Titre Large Ret1m'"
Const f1 = "'Feuille1'"
Const ideb = 20
Dim lig As Long, col1 As Long, col2 As Long, i As Long, j As Long, pp As Long
Dim a1 As String, a2
Dim NomFeuille As String
Dim NbFeuilles As Long
For p = 3 To 10 Step 1
' creation de la feuille p
NomFeuille = "p=" & (p * 6)
NbFeuilles = Sheets.Count
Sheets.Add
ActiveSheet.Name = NomFeuille
Sheets(NomFeuille).Move after:=Sheets(Sheets.Count)
' remplir la feuille p
lig = 20
imax = 70
pp = 6 * p
i = ideb
While i < imax
col1 = colder - pp + 1
col2 = colder
'For j = 1 To (LastColumn - 13) / pp j'aimerai avoir ca _
mais en prenant l'entier le plus proche de (LastColumn - 13) / pp pour cette boucle mais comme j'arrive pas _
je rajoute un While
While j <= (LastColumn - 13) / pp
a1 = "=product(" & FCoeff & "!R" & lig & "C" & col1 & ":" & "R" & lig & "C" & col2 & ")-1"
b1 = "=" & f1 & "!R" & lig & "C" & col1 - 1
j = j + 1
Cells(i, co1).FormulaR1C1 = a1
Cells(i, co2).FormulaR1C1 = b1
i = i + 1
col1 = col1 - pp
col2 = col2 - pp
Wend
'Next j
lig = lig + 1'Il est ici le bug
Wend
Next p
End Sub
Merci c fini c juste un problème de nug maintenant. Merci
re
quelques remarques
- j'avoue que j'ai toujours du mal a comprendre la gestion des paquets
- je considere que ton code correspond a ce que tu veux exactement
ceci etant précisé,
- les variables ne sont pas toutes déclarées (il faut absolument plus de rigueur)
- j n'a pas été initialisé (avec un while ce n'est pas très bon)
- j'ai remplacé le while j par ton ancien essai for j (qui marche bien)
- lig = lig+1 a l'air correct
- ton code modifié
bon courage !!!
quelques remarques
- j'avoue que j'ai toujours du mal a comprendre la gestion des paquets
- je considere que ton code correspond a ce que tu veux exactement
ceci etant précisé,
- les variables ne sont pas toutes déclarées (il faut absolument plus de rigueur)
- j n'a pas été initialisé (avec un while ce n'est pas très bon)
- j'ai remplacé le while j par ton ancien essai for j (qui marche bien)
- lig = lig+1 a l'air correct
- ton code modifié
Sub AutomaVB() Const co1 = 2 Const co2 = 3 Const FCoeff = "'Coef Mul Titre Large Ret1m'" Const f1 = "'Feuille1'" Const ideb = 20 Dim lig As Long, col1 As Long, col2 As Long, i As Long, j As Long, pp As Long Dim a1 As String, b1 As String Dim NomFeuille As String Dim NbFeuilles As Long Dim lastcolumn As Long, lastrow As Long, colder As Long, p As Long, imax As Long, jmax As Long With Sheets("Coef Mul Titre Large Ret1m") lastcolumn = .Cells(20, .Columns.Count).End(xlToLeft).Column End With colder = lastcolumn imax = 70 'ici a modifier avec le nb de lignes For p = 3 To 4 Step 1 ' creation de la feuille p pp = 6 * p NomFeuille = "p=" & pp NbFeuilles = Sheets.Count Sheets.Add ActiveSheet.Name = NomFeuille Sheets(NomFeuille).Move after:=Sheets(Sheets.Count) ' remplir la feuille NomFeuille lig = 20 i = ideb jmax = (lastcolumn - 13) \ pp While i < imax col1 = colder - pp + 1 col2 = colder For j = 1 To jmax a1 = "=product(" & FCoeff & "!R" & lig & "C" & col1 & ":" & "R" & lig & "C" & col2 & ")-1" b1 = "=" & f1 & "!R" & lig & "C" & col1 - 1 Cells(i, co1).FormulaR1C1 = a1 Cells(i, co2).FormulaR1C1 = b1 i = i + 1 col1 = col1 - pp col2 = col2 - pp Next j lig = lig + 1 Wend Next p End Sub
bon courage !!!
Merci d'etre encore là, dernière chose.
Pour ca
lig = 20
lig = lig + 1
j'arrive pas à le remplacer par
For lig = 20 To 619
Next lig
Ca permet de calculer indirectement le imax.
pour que la macro sache ou s'aréter et ne pas continuer dans le vide tout en bas des feuilles ceer et mettre des -1 partout en colonne B et des 0 partout en colonne C.
et quand y'a des cellules vides en colonne C dans les feuilles créer ca m'interresse pas j'aimerai supprimer toutes ces lignes mais avec mon code c trop long:For i = Derlig To 20 Step -1
If Cells(i, 3) = "" Then Rows(i).Delete
Next
Merci.
Pour ca
lig = 20
lig = lig + 1
j'arrive pas à le remplacer par
For lig = 20 To 619
Next lig
Ca permet de calculer indirectement le imax.
pour que la macro sache ou s'aréter et ne pas continuer dans le vide tout en bas des feuilles ceer et mettre des -1 partout en colonne B et des 0 partout en colonne C.
et quand y'a des cellules vides en colonne C dans les feuilles créer ca m'interresse pas j'aimerai supprimer toutes ces lignes mais avec mon code c trop long:For i = Derlig To 20 Step -1
If Cells(i, 3) = "" Then Rows(i).Delete
Next
Merci.
re
pour la 1° question,
ce que je comprends,
tu veux que lig decrive l'intervalle 20-619
si c'est ça :
jmax étant le nombre de lignes "i" pour une ligne "lig", il y a jmax fois moins de lignes "lig" que de lignes "i", il suffit de changer le controle du
While i < imax
par
While i < jmax*(imax-ideb)+ideb
tu peux aussi redefinir imax avant : imax = jmax*(imax-ideb)+ideb
ex pour p = 10 si imax = 70, il faut (70-20)*10+20-20 lignes "i" , pour que "lig" atteigne 50 (-20 puisqu'on commence a ideb=20)
pour la 2° question
ton code est correct, je ne vois pas mieux
tu peux peut etre enlever l'option de recalcul auto pour accelerer
a la main ou en VBA avec
Application.Calculation = xlManual
et en ressortant
Application.Calculation = xlAutomatic
bonne suite
pour la 1° question,
ce que je comprends,
tu veux que lig decrive l'intervalle 20-619
si c'est ça :
jmax étant le nombre de lignes "i" pour une ligne "lig", il y a jmax fois moins de lignes "lig" que de lignes "i", il suffit de changer le controle du
While i < imax
par
While i < jmax*(imax-ideb)+ideb
tu peux aussi redefinir imax avant : imax = jmax*(imax-ideb)+ideb
ex pour p = 10 si imax = 70, il faut (70-20)*10+20-20 lignes "i" , pour que "lig" atteigne 50 (-20 puisqu'on commence a ideb=20)
pour la 2° question
ton code est correct, je ne vois pas mieux
tu peux peut etre enlever l'option de recalcul auto pour accelerer
a la main ou en VBA avec
Application.Calculation = xlManual
et en ressortant
Application.Calculation = xlAutomatic
bonne suite
Encorec merci pour ton aidela macro je l'ai lancé y'à 1h , elle est pas encore terminé'( quand je mets imx = 4300 donc jusqu'à la fin), tu connais pas un truc à rajouter pour l'accélérer, parce que elle me plante complètement le pc, ca me bloque tout, jpeus rien faire d'autre en atendant
Merci
Merci
re
j'ai essayé en vrai grandeur sur ma machine avec les valeurs suivantes
les durées d'exécution
pour p = 2 > 10 secondes
pour p = 10 > 2 secondes
ce qui est prudent, c'est qu'avant de lancer le tout
- controler en faisant un suivi des variable pour une execution
- faire quelques essais en augmentant progressivement la valeur de imax,
- tenter une seule valeur de p pour la vraie valeur de imax
plus d'une heure, ça ne me parait pas bon.
es tu sur d'avoir initialise la valeur de imax
imax = 619 pour mon classeur ou LastLine- je crois dans ton code)
avant de le recalculer en fonction de jmax ...
Si tu ne l'as pas fait, tu te retrouves avec une valeur negative de imax qui va etre impossible a atteindre dans la boucle (qui va etre infinie)
while i < imax
ce qui pourrait expliquer ton pb de durée d'execution
bonne suite
j'ai essayé en vrai grandeur sur ma machine avec les valeurs suivantes
i = ideb '=20 jmax = (lastcolumn - 13) \ pp imax = 619 ' derniere ligne actuelle imax = jmax * (imax - ideb) + ideb ' pour un essai mettre 100
les durées d'exécution
pour p = 2 > 10 secondes
pour p = 10 > 2 secondes
ce qui est prudent, c'est qu'avant de lancer le tout
- controler en faisant un suivi des variable pour une execution
- faire quelques essais en augmentant progressivement la valeur de imax,
- tenter une seule valeur de p pour la vraie valeur de imax
plus d'une heure, ça ne me parait pas bon.
es tu sur d'avoir initialise la valeur de imax
imax = 619 pour mon classeur ou LastLine- je crois dans ton code)
avant de le recalculer en fonction de jmax ...
Si tu ne l'as pas fait, tu te retrouves avec une valeur negative de imax qui va etre impossible a atteindre dans la boucle (qui va etre infinie)
while i < imax
ce qui pourrait expliquer ton pb de durée d'execution
bonne suite