Quelques question Excell/VBA - VB/VBA/VBS - Programmation
Marsh Posté le 23-04-2004 à 11:07:17
Désolé, Je ne comprends pas ton problème.
Ton code est incomplet pour pouvoir l'exécuter et tu ne donnes pas beaucoup d'information sur le contenu des variables CCY et CCYList pour reproduire le comportement de ton traitement.
Pourrais-tu montrer un exemple de ce qui ce passe ou donner un morceau de code opérationnel ?
Marsh Posté le 24-04-2004 à 12:38:29
Salut,
Merci pour ta reponse. J'ai trouver la solution aux problemes ci dessus. En fait je m'y prenais mal pour selectionner les cellules dont j'avais besoin.
Je copie ci dessous tout mon code car j'ai une autre question :
Au travail celui ci fonctionne sans probleme par contre lorsque j'essaie de le faire tourner à mon domicile je recois le message d'erreur suivant :
Erreur 1004
Erreur definie parl'application ou par l'objet
et le dbogage m'amene à la ligne : ActiveCell.FormulaR1C1 = "=RC[-1]/" & TotalVar
Pourtant ce code fonctionne sur mon lieu de travail. Je ne comprend pas.
Merci d'avance pour votre aide
Gregory
Sheets("Loc" ).Select
Range("A1" ).Select
Selection.CurrentRegion.Select
Selection.Clear
Range("A1" ).Select
Sheets("BGLM" ).Range("O15:O217" ).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("A1" ), Unique:=True
ActiveWindow.SmallScroll Down:=9
Range("A2" ).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("A2" ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1" ).Select
Do While ActiveCell <> "TRL"
ActiveCell.Offset(1, 0).Select
Loop
Selection.Delete Shift:=xlUp
'***
Sheets("Results" ).Select
Range("A2" ).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("PD MTM" ).Select
Range("B2" ).Select
ActiveSheet.Paste
Sheets("Results" ).Select
Range("C2" ).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("PD MTM" ).Select
Range("D2" ).Select
ActiveCell.PasteSpecial xlPasteValues
'***
Sheets("Results" ).Select
Range("A3:H3" ).Select
Range(Selection, Selection.End(xlDown)).Select
Range("A3:H100" ).Select
Selection.Clear
Range("A1" ).Select
Dim CCYList As Range
Sheets("Loc" ).Select
Set CCYList = Range("A1" ).CurrentRegion
counter = 2
CCY = CCYList.Cells(counter, 1)
Do While CCY <> ""
'start loop here - once per currency
'mtm
Sheets("19700" ).Select
Range("A2:O15" ).Select
Selection.Clear
Range("D2" ).Select
ActiveCell.FormulaR1C1 = "19700"
Range("G2" ).Select
ActiveCell.FormulaR1C1 = CCY
Range("G3" ).Select
Sheets("BGLM" ).Range("I15:U217" ).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:M2" ), CopyToRange:=Range("A10" ), Unique:=False
Range("N11" ).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""D"",RC[-2],-RC[-2])"
Range("N12" ).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""D"",RC[-2],-RC[-2])"
Range("N13" ).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""D"",RC[-2],-RC[-2])"
Range("N14" ).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""D"",RC[-2],-RC[-2])"
Range("N20" ).Select
Selection.FormulaR1C1 = "="
Range("N20" ).Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
Range("N21" ).Select
'realized
Sheets("37300" ).Select
Range("A2:M11" ).Select
Selection.Clear
Range("D2" ).Select
ActiveCell.FormulaR1C1 = "37300"
Range("G2" ).Select
ActiveCell.FormulaR1C1 = CCY
Range("G3" ).Select
Sheets("BGLM" ).Range("I15:U217" ).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:M2" ), CopyToRange:=Range("A6" ), Unique:=False
Range("J18" ).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-11]C:R[-1]C)"
Range("K18" ).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-11]C:R[-1]C)"
Range("K20" ).Select
ActiveCell.FormulaR1C1 = "=-R[-2]C[-1]+R[-2]C"
Range("K21" ).Select
'summary
Sheets("Results" ).Select
If counter = 2 Then
Range("A3" ).Select
Else
Range("A2" ).Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1" ).Select
End If
ActiveCell.FormulaR1C1 = CCY
ActiveCell.Offset(0, 1).Range("A1" ).Select
ActiveCell.Formula = "=IF(ISERROR(VLOOKUP(A3,'PD MTM'!$B$2:$D$200,3,FALSE)),0,VLOOKUP(A3,'PD MTM'!$B$2:$D$200,3,FALSE))"
ActiveCell.Offset(0, 1).Range("A1" ).Select
Sheets("19700" ).Select
Range("N20" ).Copy
Sheets("Results" ).Select
ActiveCell.PasteSpecial xlPasteValues
ActiveCell.Offset(0, 1).Range("A1" ).Select
Sheets("37300" ).Select
Range("K20" ).Copy
Sheets("Results" ).Select
ActiveCell.PasteSpecial xlPasteValues
ActiveCell.Offset(0, 1).Range("A1" ).Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
ActiveCell.Offset(0, 1).Range("A1" ).Select
ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-4]"
'end loop here
counter = counter + 1
CCY = CCYList.Cells(counter, 1)
Loop
Sheets("Results" ).Select
Range("B3" ).Select
ActiveCell.Copy
ActiveCell.Offset(1, 0).Range("A1" ).Select
Do While ActiveCell <> ""
ActiveCell.PasteSpecial xlPasteFormulas
ActiveCell.Offset(1, 0).Range("A1" ).Select
Loop
myRows = counter * -1
myRows = myRows + 2
Range("F3" ).Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1" ).Select
ActiveCell.FormulaR1C1 = "=SUM(R[" & myRows & "]C:R[-1]C)"
TotalVar = ActiveCell
''***
myRows = myRows * -1
count2 = 0
Range("G3" ).Select
Do While count2 < myRows
ActiveCell.FormulaR1C1 = "=RC[-1]/" & TotalVar
ActiveCell.Offset(1, 0).Range("A1" ).Select
count2 = count2 + 1
Loop
''***
Range("G3" ).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("H3" ).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("H3" ).Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=ABS(RC[-1])"
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("H2" ).Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("H2" ), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Marsh Posté le 22-04-2004 à 20:28:53
Bonjour,
Travaillant actuellement sur un projet excel/VBA, j'aurais quelques questions à vous poser :
Voici le code affichant les resukltats de ma macro :
'summary
Sheets("Results" ).Select
If counter = 2 Then
Range("A3" ).Select
Else
Range("A2" ).Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1" ).Select
End If
ActiveCell.FormulaR1C1 = CCY
ActiveCell.Offset(0, 2).Range("A1" ).Select
ActiveCell.Formula = "='19700'!N20"
ActiveCell.Offset(0, 1).Range("A1" ).Select
ActiveCell.Formula = "='37300'!K20"
ActiveCell.Offset(0, 1).Range("A1" ).Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
ActiveCell.Offset(0, 1).Range("A1" ).Select
ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-4]"
'end loop here
counter = counter + 1
CCY = CCYList.Cells(counter, 1)
Loop
Bref mon probleme est que dans le tableau affichant les resultats, ceux-ci sont tous les mêmes lorsque l'option "Calcul" --> "Mode de calcul" est sur automatique (ca marche tres bien en manuel)
Ceci est du au fait qu'en automatique, toutes mes cellules de toutes me lignes affichent = '19700'!N20" (alors que le resultat est different pour chaque ligne). Il va donc mien me chercher la valeur en N20 de la feuille 19700 mais le probleme est qu'il me la repete dans chaque ligne du tableau (donc toutes les lignes du tableau affichent la valeur de la derniere valeur dela cellule N20 de la feuille 19700).
Quelqu un pourrait il m'expliquer comment faire pour empecher ça (a part laisser le mode manuel) ?
De plus, j'aurais aimé savoir comment faire pour faire une somme des valeurs absolues d'une rangée contenant des montants positifs et negatifs ?
Voilà, un grand merci d'avance pour votre aide,
Gregory