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