Simplification de code VBA

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 !

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

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
 
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 ! 🙂
 
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 😕 ? Pourquoi pas, mais où est-elle cette solution dans ton "nouveau" code 😱 ?
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 🙄...
Désolé, je reste sur mon opinion première 🙁...
Bon courage, mais sans moi 😡...
 
- 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
10
Affichages
575
Réponses
18
Affichages
348
Réponses
2
Affichages
296
Réponses
17
Affichages
1 K
Retour