Microsoft 365 Attendre la fin des calculs avant de poursuivre la Macro

bibbip35

XLDnaute Occasionnel
Bonsoir à tous

Je rencontre un soucis sur un fichier excel ou j'ai plusieurs formule Excel qui
sont activé en VBA puis qui sont copié en valeur
Le problème est que la macro. n'attends pas la fin des calculs
pour transformer les formules en valeur texte et je me retrouve avec des Erreurs type n/A

J'ai bien parcouru le net et la seul solution qui est d'ailleurs controversé :)
est le DOEVENTS

Application.Calculation = xlManual ' bloque le calcul automatique.

Sheets("Liste_OF_Sans_Doublon").Range("liste_OF_Sans_Doublon[[NAME_NIVEAU_2]:[Name_Niveau_OF]]").ClearContents
ActiveWorkbook.Connections("Requête - liste_OF_Sans_Doublon").Refresh

DoEvents


Sheets("Liste_OF_Sans_Doublon").Range("F2").FormulaR1C1 = _
"=IF([@[Niveau_OF]]=2,IFERROR([@[OF_PERE]]&""-""&(COUNTIF(R2C5:RC5,RC[-1])),""N-A""),"""")"
Sheets("Liste_OF_Sans_Doublon").Range("G2").FormulaR1C1 = _
"=IF([@[Niveau_OF]]=3,IFERROR((IFERROR(VLOOKUP([@[OF_PERE]],liste_OF_Sans_Doublon[[OF]:[NAME_NIVEAU_2]],3,FALSE),""""))&""-""&(COUNTIF(R2C5:RC5,RC[-2])),""N-A""),"""")"
Sheets("Liste_OF_Sans_Doublon").Range("H2").FormulaR1C1 = _
"=IF([@[Niveau_OF]]=4,IFERROR((IFERROR(VLOOKUP([@[OF_PERE]],liste_OF_Sans_Doublon[[OF]:[NAME_NIVEAU_3]],4,FALSE),""""))&""-""&(COUNTIF(R2C5:RC5,RC[-3])),""N-A""),"""")"
Sheets("Liste_OF_Sans_Doublon").Range("I2").FormulaR1C1 = _
"=IF([@[Niveau_OF]]=5,IFERROR((IFERROR(VLOOKUP([@[OF_PERE]],liste_OF_Sans_Doublon[[OF]:[NAME_NIVEAU_4]],5,FALSE),""""))&""-""&(COUNTIF(R2C5:RC5,RC[-4])),""N-A""),"""")"
Sheets("Liste_OF_Sans_Doublon").Range("J2").FormulaR1C1 = _
"=IF([@[Niveau_OF]]=6,IFERROR((IFERROR(VLOOKUP([@[OF_PERE]],liste_OF_Sans_Doublon[[OF]:[NAME_NIVEAU_5]],5,FALSE),""""))&""-""&(COUNTIF(R2C5:RC5,RC[-5])),""N-A""),"""")"
Sheets("Liste_OF_Sans_Doublon").Range("K2").FormulaR1C1 = _
"=IF([@[Niveau_OF]]=1,[@[OF_DE_TETE]],IF([@[Niveau_OF]]=2,[@[NAME_NIVEAU_2]],IF([@[Niveau_OF]]=3,[@[NAME_NIVEAU_3]],IF([@[Niveau_OF]]=4,[@[NAME_NIVEAU_4]],IF([@[Niveau_OF]]=5,[@[NAME_NIVEAU_5]],IF([@[Niveau_OF]]=6,[@[NAME_NIVEAU_6]],""""))))))"


Sheets("Liste_OF_Sans_Doublon").Calculate

DoEvents

Sheets("Liste_OF_Sans_Doublon").Range("liste_OF_Sans_Doublon[[NAME_NIVEAU_2]:[Name_Niveau_OF]]").Copy
Sheets("Liste_OF_Sans_Doublon").Range("F2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False



Aurriez-vous une idée ou solution a m’apporte ?

Merci à tous

Bibbip35
 

Simply

XLDnaute Occasionnel
Bonsoir

VB:
'Loop until all your calculations are done
Application.Calculate 'Optional - recalculates all formulas
Do Until Application.CalculationState = xlDone
    DoEvents
Loop
'~~> Rest of your code goes here

 

Discussions similaires

Réponses
14
Affichages
650

Statistiques des forums

Discussions
312 203
Messages
2 086 193
Membres
103 153
dernier inscrit
SamirN