Excel macro VBA problème exécution

Fermé
Phil - 6 sept. 2010 à 16:21
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 7 sept. 2010 à 13:42
Bonjour,
j'ai fait une petite macro pour faire un copier/coller-special-valeurs entre 2 feuilles d'un même classeur.
Quand j'exécute la macro en pas à pas, aucun problème.
Si j'exécute la macro "normalement", je n'ai pas les valeurs dans les cellules cible.
voici mon code
    Sheets("Feuill3").Select
    Cells.Select
    Selection.Copy
    Sheets("Resultat").Select
    Cells.Select
    Selection.PasteSpecial _
        Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, _
        SkipBlanks:=False, Transpose:=False

merci de votre aide
phil
A voir également:

3 réponses

cousinhub29 Messages postés 882 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 25 avril 2024 334
Modifié par cousinhub29 le 6/09/2010 à 16:38
Bonsoir,

Tu es sûr des deux "ll" dans "Feuill3"?

@ te relire

Pour info, ce code pourrait t'aider :

Sub ee()
Sheets("Feuil1").Cells.Copy
Sheets("Resultat").Range("A1").PasteSpecial _
        Paste:=xlPasteValues
End Sub
1
Bonjour,
Tout d'abord, merci de la réponse rapide.
Il semble que mon problème ne vient pas du code de ma macro mais du délai de calcul ou d'affichage.
J'ai une requête sur une BDD SQL serveur qui me renvoie des résultats dans une feuille "Feuil1"+ une feuille "Feuil3" qui fait quelques calculs sur ces données.
Ensuite je cherche à copier coller les valeurs de "Feuil3" dans "Resultat" pour pouvoir ensuite supprimer "Feuil1" & "Feuil3" pour ne garder que l'essentiel.
En mode pas à pas, l'exécution de la requête + les calculs sont OK, mon copier coller fonctionne normalement.
Si j'exécute ma macro par F5, dans "Resultat", je ne récupère que des cellules à zéro.
J'ai essayé d'ajouter un DoEvent pour avoir une temporisation, mais ça ne dois pas être la bonne instruction.
Si quelqu'un peut m'aider à ne plus tourner en rond...
Merci d'avance.
phil
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 sept. 2010 à 13:42
Bonjour,

La réponse de cousinhub29 est correcte, essaie au moins...

En mode pas à pas, l'exécution de la requête + les calculs sont OK
Avec le code que tu nous a fourni ça m'étonnerait...
Tu fais Sheets("Resultat").Select au lieu de Sheets("Resultat").Activate, ton pastespecial doit aller dans la feuille active, tu as l'impression que ça marche parce tu as Sheets("Resultat") d'activé lorsque tu contrôles je pense.
Remplace par le code fourni par cousinhub29.

Ceci dit les données ne sont peut-être pas encore là (en plus...).
Pour temporiser tu as .Wait (doevents permet aux autres évènement de s'executer sans tout bloquer)
Tu pourrais faire une boucle while qui contrôle le contenu d'une cellule prouvant que toutes les données sont arrivées, avec à l'intérieur une tempo du style Application.Wait(Now + TimeValue("00:00:03"))

eric
0