Macro excel ; probleme variable en date
Fermé
Bouhyaa
-
21 déc. 2011 à 16:04
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 24 déc. 2011 à 08:20
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 24 déc. 2011 à 08:20
A voir également:
- Macro excel ; probleme variable en date
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
1 réponse
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 21/12/2011 à 16:52
Modifié par michel_m le 21/12/2011 à 16:52
Bonjour
manipuler les dates avec VBA est toujours un affreux B....
mon truc est de transformer les dates en leur numéro de série depuis le 1/1/1900
avec la fonction dateserial et de les remettre au format lorsque je les envoie dans les feuilles
par ex
bien sûr, dans ta macro, tu peux grouper toutes les mises au format date francaise (tu remarqueras que la syntaxe de numberformat est à la mode anglaise
astuce à la première de tes prérequis écris
ca tévitera d'avoir ton écran avec des vues qui sautent et/ou qui se balladents dans la feuille et tu ganes un temps fou( environ 80 fois)
dem^me évite les activate et select par ex
With Windows("B2.xlsx").Sheets("tafeuille")
nblign = Range("B1").End(xlDown).Row + 1
Cells(nblign, "B").Select
end with
à quoi sert ce select à la fin puisque dès que tu retournes dans B2 tu fais un select sur une autre cellule (Range("B" & i).Select)?
Important indique toujours dans quelle feuille tu travailles et résonne par bloc With....end with sans oublier les points devant les range ou cells
Michel
manipuler les dates avec VBA est toujours un affreux B....
mon truc est de transformer les dates en leur numéro de série depuis le 1/1/1900
avec la fonction dateserial et de les remettre au format lorsque je les envoie dans les feuilles
par ex
valeur = DateSerial(2000, 12, 31) '31 décembre 2000 With Range("A1") .Value = valeur .NumberFormat = "m/d/yyyy" end with
bien sûr, dans ta macro, tu peux grouper toutes les mises au format date francaise (tu remarqueras que la syntaxe de numberformat est à la mode anglaise
astuce à la première de tes prérequis écris
Application.screenupdating=False
ca tévitera d'avoir ton écran avec des vues qui sautent et/ou qui se balladents dans la feuille et tu ganes un temps fou( environ 80 fois)
dem^me évite les activate et select par ex
With Windows("B2.xlsx").Sheets("tafeuille")
nblign = Range("B1").End(xlDown).Row + 1
Cells(nblign, "B").Select
end with
à quoi sert ce select à la fin puisque dès que tu retournes dans B2 tu fais un select sur une autre cellule (Range("B" & i).Select)?
Important indique toujours dans quelle feuille tu travailles et résonne par bloc With....end with sans oublier les points devant les range ou cells
Michel
23 déc. 2011 à 10:16
merci de ton aide
23 déc. 2011 à 13:13
Tu dit..
astuce à la première de tes prérequis écris
Application.screenupdating = False
Mais oublie pas de remettre à la fin de la macro (en dernière ligne)
Application.screenupdating = True
A+
Modifié par michel_m le 23/12/2011 à 13:27
Mais oublie pas de remettre à la fin de la macro (en dernière ligne)
Application.screenupdating = True
Ce n'est pas obligé puisque la macro rend la main au système et le booléen screeenupdating s'éteint lorsque la macro rend la main au système . source:Laurent Longre mais son site ne répond plus
Par contre si il y a appel d'une macro , il faut regarder les effets sur la macro appelée
23 déc. 2011 à 21:12
Mais je ne pense pas que cela devrait avoir des implications sur d'autre appel de fonction, le screenUpdating annule simplement le rafraîchissement de l'écran mais les données sont enregistrées directement dans les tableaux. Du moins c'est mon avis. (vaux mieux être prudent dans ce que je dis) ..
23 déc. 2011 à 23:19
et le booléen screeenupdating s'éteint lorsque la macro rend la main au système
Je n'en suis pas aussi sûr que cela, car comme j'avais vu l'info de Michel, j'ai voulu la mettre en pratique et en fait, j'ai été obligé de remettre le paramètre à true : j'avais un tri de la feuille avec repositionnement sur la bonne ligne et l'arrêt de la macro laissait l'affichage de la page en l'état, nécessitant une action, pour avoir un repositionnement correct.
Lorsque l'on met les instructions elles sont exécutées, autrement il suffit qu'une mise à jour d'office change un peu une fonctionnalité pour que le résultat ne soit plus le même.
Ce que :Laurent Longre dit, est probablement valable pour 2003, à un certain moment, mais ce n'est plus le cas aujourd'hui ni sur 2007/2010 : c'est du moins ce que j'ai constaté.
Bonnes fêtes à vous.