Macro ne marche pas sous Excel 2016
Bonjour,
Sujet un peu identique à celui de MrJuice, je rencontre un problème avec une macro qui tourne très de mon côté, mais qui ne marche pas chez mon collègue (sous Excel 2016. Voici la macro
Sub ActualiserDonnees()
'Actualisation des données
ActiveWorkbook.RefreshAll
Sheets("Resume").Range("A7:G1000").Clear
'Sheets("Resume").Range("A7").Formula2R1C1 = "=UNIQUE(Tableau_complet[[Code]:[Nom]])"
Sheets("Resume").Range("A7:A500").Formula2R1C1 = _
"=INDEX(Tableau_complet[Code], MATCH(0, COUNTIF(R6C9:R[-1]C, Tableau_complet[Code]), 0))"
Dim test As Integer
test = 0
For i = 7 To 500
If test = 0 Then
If IsError(Range("A" & i)) Then
n = i
test = 1
End If
End If
Next i
Range("A" & n & ":A500").Clear
'Définition du nombre de lignes
If Sheets("Resume").Range("A7").End(xlDown).Row = 1048576 Then
DerniereCellule = 7
Else
DerniereCellule = Sheets("Resume").Range("A7").End(xlDown).Row
End If
Sheets("Resume").Range("B7:B" & DerniereCellule).FormulaR1C1 = _
"=INDEX(Tableau_complet[Nom],MATCH(RC[-1],Tableau_complet[Code],0))"
'Résumé
Sheets("Resume").Range("C7:C" & DerniereCellule).FormulaR1C1 = _
"=COUNTIFS(Tableau_complet[Code],""=""&RC[-2],Tableau_complet[Nom],""=""&RC[-1])"
Sheets("Resume").Range("D7:D" & DerniereCellule).Formula2R1C1 = _
"=SUMPRODUCT((Tableau_complet[Code]=RC[-3])*(Tableau_complet[Nom]=RC[-2])*(Tableau_complet[Montant]))"
Sheets("Resume").Range("D7:D" & DerniereCellule).Style = "Currency"
'Vérification qu'il n'y ait pas d'oubli
Sheets("Resume").Range("D5").FormulaR1C1 = _
"=IF(SUM(R[2]C:R" & DerniereCellule & "C)=SUM(Tableau_complet[Montant]),""OK"",""Problème"")"
'Récupération des adresses mails
Sheets("Resume").Range("F7:F" & DerniereCellule).FormulaR1C1 = _
"=IF(INDEX(Mail[Destinataire 1],MATCH(RC[-5],Mail[Code],0))=0,"""",INDEX(Mail[Destinataire 1],MATCH(RC[-5],Mail[Code],0)))"
Sheets("Resume").Range("G7:G" & DerniereCellule).FormulaR1C1 = _
"=IF(INDEX(Mail[Destinataire 2],MATCH(RC[-6],Mail[Code],0))=0,"""",INDEX(Mail[Destinataire 2],MATCH(RC[-6],Mail[Code],0)))"
'Copiage en dur des données
Sheets("Resume").Columns("A:D").EntireColumn.AutoFit
Sheets("Resume").Range("A7:D" & DerniereCellule).Copy
Sheets("Resume").Range("A7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Pour la cosmétique
With Sheets("Resume").Range("A7:D" & DerniereCellule).Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End With
Sheets("Resume").Range("D5").Select
End SubChez mon collègue l'erreur arrive juste après l'actualisation des données, sur la ligne
Sheets("Resume").Range("A7:A500").Formula2R1C1 = _
"=INDEX(Tableau_complet[Code], MATCH(0, COUNTIF(R6C9:R[-1]C, Tableau_complet[Code]), 0))"Au départ je pensais qu'une des fonctions utilisées n'était pas disponible sous Excel 2016, mais elles le sont toutes (index, equiv et nb.si). Est-ce que c'est possible que le problème vienne de l'utilisation de tableau structuré ? Je préfère demander avant de me lancer une correction qui risque de ne pas marcher.
Merci d'avance,
Nicolas
Bonjour,
Pour commencer, la fonction Unique n'est pas disponible sous Excel 2016.
Sinon voir aide vba pour Formula2.
Tu veras ensuite pour le souci Index/Match.
Cdlt.
Bonjour Jean-Eric,
Merci pour ta réponse, effectivement au départ je passais par la fonction Unique mais la ligne est en commentaire justement parce qu'elle n'est pas disponible sous Excel 2016.
Je vais voir l'aide de Formula2, je vous tiens au courant si je trouve.
Nicolas