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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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

 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
461
Réponses
1
Affichages
1 K
  • Question Question
Microsoft 365 Suite de macro
Réponses
0
Affichages
569
Retour