Simplification de code VBA

tacite56

XLDnaute Nouveau
Bonsoir,

Je suis débutant en VBA, mais j'ai tout de même réussi à créer une petite macro ajoutant un nouvel enregistrement dans ma base de donnée, ainsi qu'une nouvelle autorité à une liste déroulante. Le problème est que mon code est très long, s'exécute lentement, et est par conséquent sujet à quelques bugs aléatoires.

En soi cela n'est pas très grave, mais je suppose qu'il doit être possible de simplifier et de sécuriser ce code. Malheureusement je n'ai pas les compétences nécessaire pour le faire ...

Quelqu'un peut-il m'aider ?

Voici le code de ma macro (il est constitué de codes générés automatiquement par Excel, de codes tapés à la main, et de codes trouvés sur ce forum) :
Code:
Sub Nouveau()
'
' Nouveau Macro
'

'
    Sheets("Liste films").Select
    Rows("3:3").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("autorités").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown
    Sheets("Nouveau").Select
    Range("A2:J2").Select
    Selection.Copy
    Sheets("Liste films").Select
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Sheets("Nouveau").Select
    Range("C8").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("C9").Select
    Selection.Copy
    Sheets("autorités").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("Nouveau").Select
    Range("C9").Select
    Selection.ClearContents
    Range("C10").Select
    Selection.ClearContents
    Range("C12").Select
    Selection.ClearContents
    Range("C13").Select
    Selection.ClearContents
    Range("C14").Select
    Selection.ClearContents
    Range("F13").Select
    Selection.ClearContents
    Range("F12").Select
    Selection.ClearContents
    Range("F8").Select
    Selection.ClearContents
    Range("C8").Select
    Sheets("autorités").Select
Range("A2:A526").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Range("A2").Select
    donnee1 = ActiveCell
    ActiveCell.Offset(1, 0).Select
    While ActiveCell <> ""
    If ActiveCell = donnee1 Then
    ActiveCell.EntireRow.Delete
    ActiveCell.Offset(-1, 0).Select
    donnee1 = ActiveCell
    ActiveCell.Offset(1, 0).Select
    Else
    donnee1 = ActiveCell
    ActiveCell.Offset(1, 0).Select
    End If
    Wend
Sheets("liste films").Select
Rows("3:3").Select

End Sub

Merci d'avance !
 

Pièces jointes

  • Liste films.xlsm
    35.2 KB · Affichages: 74

flyonets44

XLDnaute Occasionnel
Re : Simplification de code VBA

bonjour
modifications à effectuer
Code:
application.screenupdating =false     'à inscrire en 2° ligne de ta macro
Remplacer Range("C9").Select
Selection.ClearContents
par 
Range("C9").clearcontents
et idem pour toutes les lignes de code de ce genre
Cordialement
Flyonets
 

tacite56

XLDnaute Nouveau
Re : Simplification de code VBA

Bon, effectivement je n'avais pas utilisé la simplification du code que tu m'avais fourni : on m'avait donné une solution plus simple entre temps ! Et depuis ma macro a évoluée. Je ne savais pas comment reprendre le code que tu m'avais donné. J'ai donc jugé plus simple de demander de l'aide pour la dernière version de ma macro. Bref, désolé si tu penses que créer une nouvelle discussion uniquement pour ça est superflu. Mais j'ai déjà passé pas mal de temps sur mon truc, et je commence à en avoir assez de tenter par moi-même, de voir tout bugger...et de m'énerver :). Sans rancune, et sans foutage de gueule ! :)
 

JNP

XLDnaute Barbatruc
Re : Simplification de code VBA

Re
Bon, effectivement je n'avais pas utilisé la simplification du code que tu m'avais fourni : on m'avait donné une solution plus simple entre temps ! Et depuis ma macro a évoluée.
Une solution plus simple en moins de 6 lignes de codes :confused: ? Pourquoi pas, mais où est-elle cette solution dans ton "nouveau" code :eek: ?
A part cela, l'évolution, c'est un tri du tableau, et une suppression des lignes qui contiendrait le nouveau film, sans même une comparaison entre les données précédentes et les nouvelles avant suppression :rolleyes:...
Désolé, je reste sur mon opinion première :(...
Bon courage, mais sans moi :mad:...
 

Discussions similaires

Réponses
2
Affichages
80

Statistiques des forums

Discussions
311 722
Messages
2 081 930
Membres
101 843
dernier inscrit
Thaly