Déroulement trop rapide d'une macro
Bonjour à tous,
J'ai le contexte suivant:
J'ai écrit une macro assez simple qui ajoute des éléments copiés dans un tableau. Les éléments sont ajoutés dans les 7 premières colonnes tandis que les 10 colonnes suivantes sont des colonnes calculées en fonctions des 7 premières.
Une fois les éléments ajoutés, le tableau est trié, puis l'onglet est mise à jour "actualisation des calculs".
Ensuite j'opère une sélection des colonnes calculées qui est "copiée/collée valeur" sur elle-même.
' MAJ_Hist_Ind Macro
'Sélection de la cellule correspondant à la première colonne et à la première ligne disponible après le tableau "Hist_Ind"
Sheets("91-Historique Indices").Select
Range(Range("Cellule_dispo_apres_Hist_Ind")).Select
'Copie des nouveaux enregistrements
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Trie du tableau "Hist_Ind"
Application.Goto Reference:="Hist_Ind"
ActiveWorkbook.Worksheets("91-Historique Indices").ListObjects("Hist_Ind").Sort _
.SortFields.Clear
ActiveWorkbook.Worksheets("91-Historique Indices").ListObjects("Hist_Ind").Sort _
.SortFields.Add Key:=Range("Hist_Ind[Code ISIN]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("91-Historique Indices").ListObjects("Hist_Ind").Sort _
.SortFields.Add Key:=Range("Hist_Ind[Date]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("91-Historique Indices").ListObjects("Hist_Ind") _
.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Mise à jour de l'onglet
ActiveSheet.Calculate
'Copier // Coller valeur des colones calculées
Range("I2:N" & Range("Fin_de_liste_Hist_Ind")).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Mon problème est le suivant:
Le copié/collé s'est effectué avant que la mise à jour de la feuille soit terminée.
Ma question est donc la suivante:
Comment débuter l'étape du copier/collé qu'une fois la mise à jour terminée?
D'avance merci pour vos réponses.
Cordialement
Bonsoir
tu rajoutes un DoEvents après activesheet.calculate et tu essayes
a+
papou
Bonsoir,
Sauf erreur de ma part, au début du code, tu colles sans voir fait de copie :
' MAJ_Hist_Ind Macro
'Sélection de la cellule correspondant à la première colonne et à la première ligne disponible après le tableau "Hist_Ind"
Sheets("91-Historique Indices").Select
Range(Range("Cellule_dispo_apres_Hist_Ind")).Select
'Copie des nouveaux enregistrements
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Ton problème ne vient pas de là ?
Benoît Marchand
[Benead]
Bonjour paritec,
Grâce à ton conseil la mise à jour se fait maintenant jusqu'au bout avant d'enchainer sur le copié/collé.
Merci et a bientôt
Cordialement
paritec a écrit :Bonsoir
tu rajoutes un DoEvents après activesheet.calculate et tu essayes
a+
papou
Bonjour Benoit,
Merci pour ta réponse, j'ai oublié de préciser qu'avant de lancer la macro je fais une sélection dans un autre fichier que je copie.
Cordialement
Benead a écrit :Bonsoir,
Sauf erreur de ma part, au début du code, tu colles sans voir fait de copie :
' MAJ_Hist_Ind Macro
'Sélection de la cellule correspondant à la première colonne et à la première ligne disponible après le tableau "Hist_Ind"
Sheets("91-Historique Indices").Select
Range(Range("Cellule_dispo_apres_Hist_Ind")).Select
'Copie des nouveaux enregistrements
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Ton problème ne vient pas de là ?
Benoît Marchand
[Benead]