XL 2016 anciennes MACROS

HES

XLDnaute Nouveau
Bonjour à tous,
j'ai repris la comptabilité d'une association et le trésorier avant moi utilisait EXCEL pour la gestion bancaire mais également pour la comptabilité.
Il a mis à ma disposition tous ses tableaux.
Il utilisait 2 macros afin de créer le journal de banque (depuis les écritures bancaires) et ensuite le grand livre, reprenant notamment ce journal de banque.

J'ai la mauvaise surprise de constater que ces macros sont anciennes (utilisées sur une ancienne version de EXCEL), visiblement pas du VBA.

Savez-vous s'il existe un convertisseur ou autre solution permettant de traduire ces anciennes macros en nouvelles.
Je mets les 2 macros en PJ.
Merci
Stéphane
 

Pièces jointes

  • Macro.xlsm
    18.2 KB · Affichages: 11

job75

XLDnaute Barbatruc
Bonjour HES,

Il n'existe pas de méthode pour convertir des macros Excel 4.0 en macros VBA.

Mais les 2 que vous présentez sont très simples, il s'agit de copier-coller.

Il faudra les écrire manuellement en VBA.

A+
 

wDog66

XLDnaute Occasionnel
Bonjour HES

Nous avons aujourd'hui l'IA pour ce genre de demande
Code:
=ECRAN(FAUX)
=ATTEINDRE(A4)
=ACTIVER("[Trésorerie 2023-2024.xls]Journal banque CMUT")
=SELECTION.ATTEINDRE(!$A$4:!$I$3500)
=EFFACER(3)
=ACTIVER("[Trésorerie 2023-2024.xls]Relevé CMUT 2023-2024")
=SELECTION.ATTEINDRE(!$G$2:!$I$2)
=EFFACER(3)
=FORMULE(NBVAL('C:\Users\Stef\Desktop\2024 COMPTA\2023-2024\Finances Compta\Compta 2023-2024\[Trésorerie 2023-2024.xls]Relevé CMUT 2023-2024'!$A$6:$A$1500);!$G$2)
=ACTIVER("[Trésorerie 2023-2024.xls]Relevé CMUT 2023-2024")
=FORMULE(!$I$2+1;!$H$2)
=FORMULE(!$H$2;!$I$2)
=ACTIVER("[Trésorerie 2023-2024.xls]calculCMUT")
=SI(SOMME(!$A$2:$A$400)=0;ATTEINDRE(A11);ATTEINDRE(A16))
=SI(!$J$1=!$I$1;ATTEINDRE(A18);ALERTE("L'ECRITURE N'EST PAS EQUILIBBREE DANS LE FEUILLE CALCUL. RECTIFIER ET RELANCER .";3))
=ATTEINDRE(A31)
=SELECTION.ATTEINDRE(!$A$2:!$J$400)
=COPIER()
=SELECTION.ATTEINDRE(!$K$2)
=COLLAGE.SPECIAL(3)
=TRIER(1;"L2C11";2)
=SELECTION.ATTEINDRE(!$L$2:INDEX(!$T$2:!$T$400;NB.SI(!$K$2:!$R$400;"=1")))
=COPIER()
=ACTIVER("[Trésorerie 2023-2024.xls]Journal banque CMUT")
=SELECTION.ATTEINDRE(INDEX(!$A$4:!$A$5000;!$A$2+1))
=COLLAGE.SPECIAL(3)
=ACTIVER("[Trésorerie 2023-2024.xls]Relevé CMUT 2023-2024")
=SI(!$H$2=!$G$2;ATTEINDRE(A30);ATTEINDRE(A12))
=BIP()
=RETOUR()
convertir cette macro XL4 en VBA ?
Réponse
Code:
Sub MacroXL4ToVBA()
    ' Activer le classeur Trésorerie 2023-2024.xls
    Workbooks.Open ("C:\Users\Stef\Desktop\2024 COMPTA\2023-2024\Finances Compta\Compta 2023-2024\Trésorerie 2023-2024.xls")
    Sheets("Journal banque CMUT").Activate
   
    ' Sélectionner la plage A4:I3500
    Range("A4:I3500").Select
    Selection.ClearContents
   
    ' Activer le relevé CMUT 2023-2024
    Workbooks("Trésorerie 2023-2024.xls").Sheets("Relevé CMUT 2023-2024").Activate
   
    ' Sélectionner la plage G2:I2
    Range("G2:I2").Select
    Selection.ClearContents
   
    ' Calculer le nombre de valeurs dans la colonne A du relevé CMUT
    Dim nbValeurs As Long
    nbValeurs = WorksheetFunction.CountA(Workbooks("Trésorerie 2023-2024.xls").Sheets("Relevé CMUT 2023-2024").Range("A6:A1500"))
    Range("I2").Formula = nbValeurs
   
    ' Calculer la prochaine ligne à écrire dans le relevé CMUT
    Dim prochaineLigne As Long
    prochaineLigne = Range("H2").Value + 1
    Range("H2").Formula = prochaineLigne
   
    ' Activer le feuille de calcul calculCMUT
    Sheets("calculCMUT").Activate
   
    ' Vérifier si la somme de la colonne A est égale à zéro
    If Application.WorksheetFunction.Sum(Range("A2:A400")) = 0 Then
        Range("A11").Select
    Else
        Range("A16").Select
    End If
   
    ' Vérifier si J1 est égal à I1
    If Range("J1").Value = Range("I1").Value Then
        Range("A18").Select
    Else
        MsgBox "L'ECRITURE N'EST PAS EQUILIBRÉE DANS LE FEUILLE CALCUL. RECTIFIER ET RELANCER .", vbExclamation
        Exit Sub
    End If
   
    ' Aller à la ligne A31
    Range("A31").Select
   
    ' Sélectionner la plage A2:J400
    Range("A2:J400").Select
   
    ' Copier la sélection
    Selection.Copy
   
    ' Sélectionner la cellule K2
    Range("K2").Select
   
    ' Coller les valeurs uniquement
    Selection.PasteSpecial Paste:=xlPasteValues
   
    ' Trier la plage par la colonne L (colonne 11)
    Range("L2").Select
    Range("L2").Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
   
    ' Sélectionner la plage L2:T400 en fonction des valeurs de la colonne K
    Dim derniereLigne As Long
    derniereLigne = Application.WorksheetFunction.Match(1, Range("K2:R400"), 0)
    Range("L2").Resize(derniereLigne - 1, 8).Select
   
    ' Copier la sélection
    Selection.Copy
   
    ' Activer le journal banque CMUT
    Workbooks("Trésorerie 2023-2024.xls").Sheets("Journal banque CMUT").Activate
   
    ' Sélectionner la prochaine ligne vide dans la colonne A
    Dim prochaineLigneJournal As Long
    prochaineLigneJournal = WorksheetFunction.Index(Range("A4:A5000"), Range("A2").Value + 1)
    Range("A" & prochaineLigneJournal).Select
   
    ' Coller les valeurs uniquement
    Selection.PasteSpecial Paste:=xlPasteValues
   
    ' Vérifier si H2 est égal à G2
    If Range("H2").Value = Range("G2").Value Then
        Range("A30").Select
    Else
        Range("A12").Select
    End If
   
    ' Émettre un bip sonore
    Beep
   
    ' Retour au début
    Exit Sub
   
End Sub
ChatGPT : Assurez-vous de vérifier que les noms de feuilles, les plages de cellules et les chemins de fichiers correspondent à votre environnement. Cette conversion est basée sur l'interprétation des actions effectuées dans la macro XL4 et peut nécessiter des ajustements supplémentaires en fonction de vos besoins spécifiques.
Même demande à faire pour l'autre, ça vaut ce que ça vaut 😜

Cordialement.
 

wDog66

XLDnaute Occasionnel
Bonjour Staple1600, le fil,

Il suffit de lui demander gentiment 😜

C'était surtout pour le jeu, car le code donné n'est absolument pas conforme à ce que la compréhension humaine peut et doit écrire 😂

Exemple
VB:
  ' Vérifier si la somme de la colonne A est égale à zéro
    If Application.WorksheetFunction.Sum(Range("A2:A400")) = 0 Then
        Range("A11").Select
    Else
        Range("A16").Select
    End If
Qui n'est absolument pas ce que veut dire le code en XL4 o_O
1714227671882.png


Cordialement.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour @HES, le fil


Tes macros XL4 font appel ces deux fichiers
=ACTIVER("[GL 30-06-2024.xls]Gr livre")
==ACTIVER("[Trésorerie 2023-2024.xls]Journal banque CMUT")

Il faudrait que tu fasses une copie de ces deux fichiers
Puis que tu les anonymises (et que tu réduises leur taille le cas échéant)
Enfin tu joins ces copies dans ta discussion.

On pourra alors faire en VBA ce que faisait tes macros XL4.

C'est plus simple que tu joignes ces fichiers, plutôt que ceux qui veulent te répondre créer des fichiers (sans savoir à quoi ressemble la structure des orignaux)
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 123
Membres
112 666
dernier inscrit
Coco0505