Recopier plusieurs formules

Résolu/Fermé
SolidSnake_59 Messages postés 15 Date d'inscription jeudi 30 octobre 2008 Statut Membre Dernière intervention 15 mars 2015 - Modifié par crapoulou le 15/03/2015 à 00:12
SolidSnake_59 Messages postés 15 Date d'inscription jeudi 30 octobre 2008 Statut Membre Dernière intervention 15 mars 2015 - 15 mars 2015 à 11:47
Bonjour à tous,

Cela fait plusieurs heures que je me creuse les méninges pour résoudre mon prb... En vain.
J'espère que vous saurez m'aider !!

Voici mon code :

Sub MacroFiscadas()

' Récupération nom fichier macro
nomfichierMacro = ActiveWorkbook.Name

'Vidage feuille 2
    
    Sheets("Feuil2").Select
    Cells.Select
    Selection.Delete
    Range("A1").Select

'Ouverture du fichier

fichierSource = Application.GetOpenFilename

'Transfert des données vers Excel

    Workbooks.Open Filename:=fichierSource
    nomfichierSource = ActiveWorkbook.Name 'recup nom fichier excel
    
    'Sheets("CONVERT").Select
    Columns("A:F").Select
    Selection.Copy
    
    Windows(nomfichierMacro).Activate
    Sheets("Feuil2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    Workbooks(nomfichierSource).Close SaveChanges:=False
    
' Gestion matricule
        
    Sheets("Feuil2").Select
    dernlign = [B655536].End(xlUp).Row 'recalcul de la dernière ligne
    'MsgBox (dernlign)
    
    Range("G1").Value = "CHPPARAM_ADRESSE.CPADR_M_FISCADASHT"
    
    Range("H1").Value = "CHPPARAM_ADRESSE.CPADR_M_FISCADASTTC"
    
    Range("I1").Value = "CHPPARAM_ADRESSE.CPADR_B_PROPOSFISCADAS"
    
    Range("J1").Value = "CHPPARAM_ADRESSE.CPADR_B_VALIDFISCADAS"
    
    Range("B1").Value = "ADR_CODE"

    
    'envoi formule dans G2
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-1]<tranche1,RC[-1]<>0),montant1,IF(AND(RC[-1]>=tranche1,RC[-1]<tranche2),montant2,IF(AND(RC[-1]>=tranche2,RC[-1]<tranche3),montant3,IF(AND(RC[-1]>=tranche3,RC[-1]<tranche4),montant4,IF(RC[-1]>=tranche4,montant5)))))"
    
    Range("H2").Select
    ActiveCell.FormulaR1C1 = _
        "=(RC[-1]*(1+(tva/100)))"
    
    'copie formule
    Selection.AutoFill Destination:=Range("G2:G" & dernlign)
    Range("G2:G").Select
    
    'copie colle valeur
    Sheets("feuil2").Select
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
    
    
    MsgBox ("Good job !")
    
End Sub

Le problème est que ça beug avec le message : "La méthode de la classe Range a échoué".
Je débute et j'ai regardé sur le net pour trouver ma réponse mais rien ne marche.

Pour info, la macro fonctionnait très bien avant que j'insère ma seconde formule :
Range("H2").Select
    ActiveCell.FormulaR1C1 = _
        "=(RC[-1]*(1+(tva/100)))"


Et lors du beug, c'est cette ligne qui est mise en surbrillance :
Selection.AutoFill Destination:=Range("G2:G" & dernlign)


Merci à tous de votre aide.
A voir également:

3 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
15 mars 2015 à 07:01
Bonjour
Tva = combien? aucune valeur est attribuée à cette variable, il manque cette info.
cdlt
0
SolidSnake_59 Messages postés 15 Date d'inscription jeudi 30 octobre 2008 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 11:21
Bonjour Frenchie83,
Tva=20 tva est le nom d'une cellule de la feuille1 et renvoie à la valeur 20.
Cette formule est bonne dans ma macro car le montant TTC se calcule bien. Sauf que je n'arrive pas à recopier les cellules G2, H2 et I2 vers le bas (jusqu'à la dernière cellule contenant des données.

Ma ligne "selection.autofill" fonctionne si je ne mets qu'une seule formule (G2). Mais dès lors que j'ai d'autres formules dans les cellules H2 et I2 je ne sais pas comment faire pour toutes les recopier vers le bas...
J'ai un beug à chaque fois.

Merci
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
15 mars 2015 à 11:40
   Range("H2").Select
    ActiveCell.FormulaR1C1 =  "=(RC[-1]*(1+(tva/100)))"    
    'copie formule
    Selection.AutoFill Destination:=Range("G2:G" & dernlign)


vous sélectionnez H2 et vous voulez faire une recopie en G, il y a quelque chose qui cloche.
Pour éviter la recopie, vous pouvez écrire
Range("H2:H" & dernlign).FormulaR1C1 = "=(RC[-1]*(1+(tva/100)))"
idem pour les autres colonnes
cdlt
0
SolidSnake_59 Messages postés 15 Date d'inscription jeudi 30 octobre 2008 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 11:47
Merci Frenchie83.
Cela marche parfaitement!!
0