Loin de moi l'idée de considérer les fonctions natives comme du faux (ou mauvais) code. J'avais pris soin de mettre "vrai code" entre guillemets car j'avais justement peur que cela soit mal interprété.
Je voulais simplement dire que j'avais pris l'habitude de m'en passer par convention tout à fait personnelle et arbitraire.
Je n'avais d'ailleurs jamais pris en considération le temps d'exécution dans ce choix. Mais suite à ce sujet, je vais peut être revoir mes considérations sur ce point là.
Nous revenons là sur la discussion "formuliste" ou "vbaiste"
Les formules natives d'excel seront toujours plus rapides que du code VBA
mais du code VBA faisant appel aux fonctions intégrées d'excel sera toujours plus rapide que vba faisant appel à une macro perso qui fait la même chose. Les fonctions intégrées d'excel sont écrites en langage machine non interprété. Le code VBA est en langage interprété qui est beaucoup moins rapide.
C'est clair que quand on traite des petites plages de cellules on n'a aucune chance de percevoir la différence ou que celle-ci reste suffisamment faible pour qu'on s'en moque. En revanche dès qu'on commence à allonger le nombre de cellules traitées, on voit une sacré différence.
Tu as raisons Misange, on frise le troll là ! Mea Culpa ! Mea Culpa !
Pour me faire pardonner et revenir sur l'excellent sujet initié par Staple, je joins une petit classeur exemple de mes contrôles de saisie pour :
- Date
- Nombre entier
- Monétaire
- Nom (tout en majuscule)
- Prénom (première lettre en majuscule)
Il s'agit d'une petite réalisation qui remonte pour partie à mes débuts sur XLD.
Une partie seulement repose sur des modules de classe (faute de compétence à l'époque pour gérer les entrées / sorties sur les contrôles)
Je ne suis pas très fier de ce code qui est loin d'être optimisé (et qui contient peut être quelques absurdités (notamment dans la gestion des dates)) mais si ça peut servir à quelques personnes pas trop exigeantes....
A noter que j'y ai inclu mon petite système d'alerte en cas d'erreur. Mon but était de bloquer "au plus vite" une erreur de saisie (sans attendre la validation du formulaire par exemple) tout en évitant d'afficher un Msgbox que l'utilisateur devra valider.
GeoTrouvePas
On a tous mouillé nos culottes avec Excel quand nous débutions
La première vertu d'Excel c'est de nous offrir un vaste terrain de jeu et du plaisir
Ensuite on a le droit de prendre la voie de l'orthodoxie ou de l'hérésie (voir un mix des deux comme moi)
Donc ne dévalorises pas tes productions de jeunesse, et merci pour le partage.
Au fait, j'ai point compté, mais sommes-nous arrivés à 50 macros dans ce fil?
PS: Pour le fil, t’inquiètes pas, il était plein de poussières depuis 2006, il ne craint plus rien désormais.
EDIT: Je viens d'aller voir ta PJ. Ton code est loin d'être dans la moyenne des débutants en VBA !!!
Il est largement au dessus
C'est ma quête permanente du code parfait qui me fait dire ça. Je pourrais me coucher chaque soir en étant content de mon travail et tout jeter (ou reprendre) le lendemain matin car ce n'est pas assez parfait ! C'est aussi ça Excel, on a toujours l'impression de faire mieux.
A moins avis, on est loin du compte (surtout si on exclue les macros "humoristiques") et si ça ne tenait qu'à moi, je le renommerai immédiatement "Top 500000000 des macros préférées des xldiens".
Peu de remarques me font autant plaisir que ça ! Un grand merci à toi mais aussi à......... XLD !!!! Car même si je manie Excel depuis des années, c'est en venant sur XLD que j'ai trouvé des sources intéressantes, que j'ai étanché ma soif d'information et que j'ai trouvé des contributeurs généreux et doués qui m'ont réellement donné envie d'aller plus loin. Je ne prendrais surtout pas le risque de me lancer dans une énumération de peur d'oublier quelqu'un (je dirais juste que tu ne seras à la fin de cette liste que si on la classe par ordre alphabétique ^^).
Re bonjour, le fil
je viens de trouver celle ci dans le fil des fonctions préférées et je ne m'en lasse pas !
merci brigitte !
Sub TextVoix()
Dim Sp As Object
On Error Resume Next
Set Sp = CreateObject("Sapi.SpVoice")
If Sp Is Nothing Then Exit Sub
Sp.Speak "hello, birgitt, gruiik"
End Sub
et là ou je meurs littéralement c'est que tu peux changer le texte !!!
Cette méthode permet de présenter oralement les cellules de la plage par ligne ou par colonne.
Syntaxe : expression.Speak(SensParler, FormulesParler)
expression Variable qui représente un objet Range.
Sub Macro1()
Range("A1").Activate
Range("A1").Speak
Range("A2").Activate
Range("A2").Speak
Range("A3").Activate
Range("A3").Speak
End Sub
Je remonte cette très bonne file, les nouveaux excelistes doivent connaître la merveille qui la clôture. Je vais coller en easter egg, ça va être ENORME !!