Ignorer erreur VBA pour poursuivre la macro
RésoluNai Messages postés 765 Statut Membre -
Bonjour toutes et tous !
J'utilise un fichier crée par mes soins pour répondre aux besoins de gestion du budget de la famille.
Je souhaite pouvoir dupliquer le mois précédent en reprenant toute la feuille.
Toutes les feuilles sont renommées à l'aide de la cellule A1, avec :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Target = Range("A1")
If Target = "" Then Exit Sub
Application.ActiveSheet.Name = VBA.Left(Target, 31)
Exit Sub
End Sub
Pour la duplication, j'utilise :
Sub ajouter()
Sheets(1).Select
Sheets(1).Copy After:=Sheets(Sheets.Count)
Range("E1").Select
ActiveCell.FormulaR1C1 = "SUITE"
Range("A2").Select
End Sub
Cette dernière macro entre en conflit avec la première.
Je souhaite pouvoir :
- Ignorer le message d'erreur
- Sélectionner la cellule A1
- Ignorer le message d'erreur
- Renommer la cellule A1
Il existe probablement un moyen plus simple, mais je ne vois pas comment éviter le conflit.
Je vous remercie de votre aide :)
voir le fichier : https://www.cjoint.com/c/NIEqSPG4FR4
Office 2016
- Ignorer erreur VBA pour poursuivre la macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
1 réponse
Bonjour,
Le conflit vient probablement du fait que la première macro qui renomme la feuille à partir de la cellule A1 se déclenche à chaque modification de la cellule ou de la sélection, y compris lors de l'exécution de la deuxième macro.
Pour éviter cela, il est possible de désactiver temporairement les événements pendant l'exécution de la macro de duplication, ce qui empêchera la première macro de se déclencher pendant cette période.
Voici une version modifiée de ta macro ajouter pour éviter ce conflit :
Sub ajouter()
' Désactiver les événements pour éviter le déclenchement de la macro de renommage
Application.EnableEvents = False
' Copier la première feuille et la placer à la fin
Sheets(1).Copy After:=Sheets(Sheets.Count)
' Sélectionner la cellule A1 et définir un nouveau nom pour la feuille
With ActiveSheet
.Range("A1").Select
On Error Resume Next ' Ignorer l'erreur si la feuille ne peut pas être renommée immédiatement
.Name = Left(.Range("A1").Value, 31)
On Error GoTo 0 ' Désactiver l'ignoration des erreurs
End With
' Réactiver les événements
Application.EnableEvents = True
End Sub
Bonjour à tous,
Essaie :
Sub ajouter() Sheets(1).Copy After:=Sheets(Sheets.Count) Range("E1").FormulaR1C1 = "SUITE" Range("A1") = "" Range("A2").Select End SubDaniel
Bonjour et merci aussi :)
Simple et efficace.
J'ai gardé la proposition de Bruno qui correspond davantage à ma demande.
Merci :)
Bonjour et merci pour cette réponse complète ! :)
Il me manquait ce petit bout :
Avec ça, tout rentre dans l'ordre et ça pourrait me resservir.
Encore merci :)