Accélération d'une macro enregistrée

  • Initiateur de la discussion Initiateur de la discussion Pygouv
  • Date de début Date de début

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 !

Pygouv

XLDnaute Occasionnel
Bonjour,

J'ai utiliser l'enregistreur de macro, mais cette dernière est bien trop longue...

Quelqu'un aurait il un moyen de raccourcir ce code :

Sub Bouton1_Clic()
'
' Bouton1_Clic Macro
' MAJ month
'

'

Application.ScreenUpdating = False

Range("E4").Select
Cells.Replace What:="jan", Replacement:="1", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="feb", Replacement:="2", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="mar", Replacement:="3", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="apr", Replacement:="4", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="may", Replacement:="5", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="jun", Replacement:="6", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="jul", Replacement:="7", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="aug", Replacement:="8", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="sep", Replacement:="9", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="oct", Replacement:="10", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="nov", Replacement:="11", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="dec", Replacement:="12", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


Merci beaucoup!
 
Re : Accélération d'une macro enregistrée

Bonjour Kevin,

Elle sert à remplacer les termes de ma colonne D : jan devient 1, feb devient 2 etc...

Afin d'avoir les mois sous forme numérique et ne pas être géné par l'ordre alphabetique automatique d'un TCD que j'utilise par la suite avec ces données. Car Sinon dans mon TCD ce sera Aug, Aprl, etc... Donc mauvais ordre de mois qui ne seront pas dans l'ordre chronologique...

Une idée?
 
Re : Accélération d'une macro enregistrée

Essaye ce code, dit moi si c'est plus rapide.

Sinon essaye peut-être de jouer avec les formats de cellule. (Ce n'est qu'une idée)

Sub TEST()

Dim x As Integer

x = 1

Do While Cells(x, 4) <> ""

If Cells(x, 4) = "Janvier" Then Cells(x, 4) = 1
If Cells(x, 4) = "Février" Then Cells(x, 4) = 2
If Cells(x, 4) = "Mars" Then Cells(x, 4) = 3
If Cells(x, 4) = "Avril" Then Cells(x, 4) = 4
If Cells(x, 4) = "Mai" Then Cells(x, 4) = 5
If Cells(x, 4) = "Juin" Then Cells(x, 4) = 6
If Cells(x, 4) = "Juillet" Then Cells(x, 4) = 7
If Cells(x, 4) = "Aôut" Then Cells(x, 4) = 8
If Cells(x, 4) = "Septembre" Then Cells(x, 4) = 9
If Cells(x, 4) = "Octobre" Then Cells(x, 4) = 10
If Cells(x, 4) = "Novembre" Then Cells(x, 4) = 11
If Cells(x, 4) = "Décembre" Then Cells(x, 4) = 12

x = x + 1

Loop


End Sub
 
Re : Accélération d'une macro enregistrée

Soit tu la colle à la place de ta macro d'origine afin de récupérer le bouton.
Soit tu réaffectes le bouton à la macro nommée "TEST"
Soit tu la lance directement à partir de VBA editor à l'aide de la touche F8 pour le pas à pas ou F5 pour l’exécution totale.
 
Re : Accélération d'une macro enregistrée

Bonjour phlaurent55,

Merci pour ta réponse.

Je n'arrive pas à adapter ton code...

Pourrais tu m'expliquer comment faire pour mon cas?

Je te mets un fichier exemple en PJ...

Je te remercie d'avance, tu me sauves 🙂
 

Pièces jointes

Re : Accélération d'une macro enregistrée

Bonjour tout le monde,

Je me suis permis de modifier le code de phlaurent55, il fallait modifier la valeur de départ de la valeur x car ton tableau ne commence pas à la ligne 1.

C'est certainement pour cela que mon code ne fonctionnait pas non plus.

Cordialement

Kevin
 

Pièces jointes

Re : Accélération d'une macro enregistrée

Bonjour à tous,
Justre pour le fun, un bouton On / Off
Le code est dans le code de la feuille.
VB:
Private Sub CommandButton1_Click()
Dim I&, T As Variant, Plg As Range
Set Plg = Range(Cells(10, 4), Cells(Rows.Count, 4).End(3))
T = Plg
   If IsNumeric(T(1, 1)) Then
        CommandButton1.Caption = "Mois en Chiffre"
        For I = LBound(T, 1) To UBound(T, 1)
            T(I, 1) = Format(CDate("1/" & T(I, 1) & "/2000"), "mmmm")
        Next I
    Else
        CommandButton1.Caption = "Mois en Texte"
        For I = LBound(T, 1) To UBound(T, 1)
            T(I, 1) = Format(CDate("1/" & T(I, 1) & "/2000"), "m")
        Next I
    End If
Plg = T
End Sub
Cordialement
 

Pièces jointes

Re : Accélération d'une macro enregistrée

Re
Moins Fun, plus adapté, plus rapide:
VB:
Private Sub CommandButton1_Click()
Dim I&, T As Variant, Plg As Range
Dim Month As Object

Set Month = CreateObject("Scripting.Dictionary")
Set Plg = Range(Cells(10, 4), Cells(Rows.Count, 4).End(3))

Month("jan") = 1: Month("feb") = 2: Month("mar") = 3
Month("apr") = 4: Month("may") = 5: Month("jun") = 6
Month("jul") = 7: Month("aug") = 8: Month("sep") = 9
Month("oct") = 10: Month("nov") = 11: Month("dec") = 12
T = Plg

For I = LBound(T, 1) To UBound(T, 1)
    T(I, 1) = Month(T(I, 1))
Next I

Plg = T
End Sub

Cordialement
 

Pièces jointes

Re : Accélération d'une macro enregistrée

Re
J'ai utilisé un bouton de la boite à outil Contrôle activX (pas formulaire)
Si tu veux l'utiliser dans un module standard, change le nom de la macro et affecte la à ton bouton formulaire.
Cordialement
 
- 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
1
Affichages
280
Réponses
2
Affichages
467
Réponses
3
Affichages
543
Retour