Excel VBA - Macro de compilation

Bonjour à tous,

Je cherche à mettre en forme la formule suivante dans mon code visual basic. La version simple est fonctionnelle mais la version complexifiée ne fonctionne pas et je n'arrive pas à comprendre pour quelle raison, si quelqu'un savait m'éclairer s'il vous plait.

Version simple: (qui fonctionne)

Private Sub test()

Application.DisplayAlerts = False

Dim STATS As String

STATS = ActiveWorkbook.Name

nomfich = Application.GetOpenFilename(Title:="Insertion", MultiSelect:=True)

' si aucun choix effectué, sortie du programme

If TypeName(nomfich) = "Boolean" Then

'MsgBox("Aucun fichier n'a été sélectionné. Fin de la procédure", vbCritical + vbOKOnly,"Sortie")

Exit Sub

End If

If UBound(nomfich) >= 1 Then

Dim rep As Long

Dim Liste As String

Dim compteur As Byte

For compteur = 1 To UBound(nomfich)

Liste = Liste & vbCr & nomfich(compteur)

Next compteur

'affichage de l'ensemble de la liste des fichiers et proposition d 'ouverture

rep = MsgBox("Voici la liste des Bayplans sélectionnés." _

& Liste & vbCr & "Confirmez-vous leur intégration ?", vbYesNo + vbQuestion, "Confirmation Bayplans")

'ouverture des fichiers en cas de réponse positive

If rep = vbYes Then

For compteur = 1 To UBound(nomfich)

Workbooks.OpenText nomfich(compteur), _

Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 9), Array(3, _

1), Array(4, 1), Array(16, 1), Array(18, 1), Array(20, 1), Array(25, 1), Array(30, 1), _

Array(35, 1), Array(40, 1), Array(43, 9), Array(45, 1), Array(51, 9), _

Array(53, 1), Array(59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array( _

102, 1), Array(106, 9)), TrailingMinusNumbers:= _

True

Range("J:J,K:K,P:P,Q:Q,R:R,S:S,T:T,U:U").Select

Range("T1").Activate

Selection.Delete Shift:=xlToLeft

Dim derligne0 As Long

derligne0 = Range("B65536").End(xlUp).Row

Columns("E:E").Select

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Range("$E$2" & ":E" & derligne0).FormulaR1C1 = "=IF(OR(LEFT(RC[-2],2)=""20"",LEFT(RC[-2],2)=""22""),""20'"",IF(OR(LEFT(RC[-2],2)=""40"",LEFT(RC[-2],2)=""42""),""40'"",IF(LEFT(RC[-2],2)=""45"",""40 HC"",IF(LEFT(RC[-2],2)=""L5"",""45'"",""NA""))))"

Columns("f:f").Select

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Range("$F$2" & ":F" & derligne0).FormulaR1C1 = "=IF(RC[-1]=""20'"",""1"",IF(RC[-1]=""40'"",""2"",IF(RC[-1]=""40 HC"",""2,3"",IF(RC[-1]=""45'"",""2,6"",""NA""))))"

Range("A1").Select

Selection.AutoFilter

ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:=">=1", Operator:=xlAnd

Range("B2:P2").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.SpecialCells(xlCellTypeVisible).Select

Application.CutCopyMode = False

Selection.Copy

Sheets("BASE").Activate

Dim derligne As Long

derligne = ActiveSheet.Range("A1048576").End(xlUp).Offset(1, 0).Row

Range("D" & derligne).Activate

ActiveSheet.Paste

Application.CutCopyMode = False

Dim DerLigne2 As Long

DerLigne2 = ActiveSheet.Range("D1048576").End(xlUp).Row

Dim DerLigne8 As Long

DerLigne8 = ActiveSheet.Range("A1048576").End(xlUp).Offset(1, 0).Row

Range("a" & DerLigne8 & ": a" & DerLigne2).Value = N

Range("b" & DerLigne8 & ": b" & DerLigne2).Value = V

Range("C" & DerLigne8 & ": C" & DerLigne2).Value = S

Application.DisplayAlerts = False

Next compteur

End If

Application.DisplayAlerts = True

Sheets("BASE").Activate

Dim derligne3 As Long

derligne3 = ActiveSheet.Range("A1048576").End(xlUp).Row

ActiveSheet.Range("$A$2" & ":Q" & derligne3).RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlNo

Range("A2").Activate

End If

End Sub

Version complexifiée: (qui ne fonctionne pas)

Columns("E:E").Select

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Range("$E$2" & ":E" & derligne0).FormulaR1C1 = "=IF(OR(LEFT(RC[-2],2)=""20"",LEFT(RC[-2],2)=""22""),""20'"",IF(OR(LEFT(RC[-2],2)=""40"",LEFT(RC[-2],2)=""42"",LEFT(RC[-2],2)=""43"",LEFT(RC[-2],2)=""49""),""40'"",IF(LEFT(RC[-2],2)=""45"",""40 HC"",IF(OR(LEFT(RC[-2],2)=""L5"",LEFT(RC[-2],2)=""95"",""45'"",IF(LEFT(RC[-2],2)=""PP"",""53"",""NA""))))"

Merci pour votre aide précieuse !

Bonjour

A tester : Manquaient les parenthèses surlignées

Columns("E").Insert
Range("E2" & ":E" & derligne0).FormulaR1C1 = "=IF(OR(LEFT(RC[-2],2)=""20"",LEFT(RC[-2],2)=""22""),""20'"",IF(OR(LEFT(RC[-2],2)=""40"",LEFT(RC[-2],2)=""42"",LEFT(RC[-2],2)=""43"",LEFT(RC[-2],2)=""49""),""40'"",IF(LEFT(RC[-2],2)=""45"",""40 HC"",IF(OR(LEFT(RC[-2],2)=""L5"",LEFT(RC[-2],2)=""95""),""45'"",IF(LEFT(RC[-2],2)=""PP"",""53"",""NA"")))))"

Bonjour, la formule fonctionne maintenant, merci bien !

Rechercher des sujets similaires à "vba macro compilation"