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

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!
 

Pygouv

XLDnaute Occasionnel
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?
 

Kevin B

XLDnaute Junior
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
 

Kevin B

XLDnaute Junior
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.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Accélération d'une macro enregistrée

Bonjour à tous,

voir fichier joint (à adapter)

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    18.7 KB · Affichages: 34
  • 111.xlsm
    18.7 KB · Affichages: 39
  • 111.xlsm
    18.7 KB · Affichages: 40

Pygouv

XLDnaute Occasionnel
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

  • Problème adaptation.xlsm
    180.7 KB · Affichages: 29

Kevin B

XLDnaute Junior
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

  • Copie de Problème adaptation.xlsm
    186.3 KB · Affichages: 33

Efgé

XLDnaute Barbatruc
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

  • Pygouv.xls
    448.5 KB · Affichages: 30
  • Pygouv.xls
    448.5 KB · Affichages: 29
  • Pygouv.xls
    448.5 KB · Affichages: 28

Efgé

XLDnaute Barbatruc
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

  • Pygouv.xls
    448 KB · Affichages: 25
  • Pygouv.xls
    448 KB · Affichages: 26
  • Pygouv.xls
    448 KB · Affichages: 27

Efgé

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
1
Affichages
145

Statistiques des forums

Discussions
312 777
Messages
2 092 031
Membres
105 158
dernier inscrit
Uraken