Erreur d'execution 9 - Incompréhensible et lien cellule/Fleuille automatique

Bolinette

XLDnaute Nouveau
Bonjour,

J'ai déjà un fichier excel avec des macro (peut être pas les meilleurs...) mais ça marche. Mais même si le résultat est bon, il m'affiche "Erreur d'execution 9" et je ne comprend pas pourquoi ...

Merci d'avance pour l'aide que vous pourriez m'apporter.

Voici les codes :

Code:
Option Explicit
Dim maColonne As Integer
Sub SupprimeFeuille()

Range("K5:K12510").Select
    Selection.ClearContents
    Range("A1").Select

Dim Compteur As Integer, Nom As String
    Application.DisplayAlerts = False
    For Compteur = Worksheets.Count To 1 Step -1
        Nom = Sheets(Compteur).Name
        Select Case Nom
        Case "Pays", "model"
            
        Case Else
            Sheets(Compteur).Delete
        End Select
    Next Compteur
    Application.DisplayAlerts = True
    
End Sub

Sub AjoutFeuilles()
Dim derLi As Long
Dim i As Integer
Dim maFeuille As Worksheet
Set maFeuille = ActiveSheet

maColonne = 5 ' a ajuster

derLi = Columns(maColonne).Find("*", , , , , xlPrevious).Row
For i = 5 To derLi ' 2 si ligne de titre
  'Si la feuille existe déjà, on passe à la ligne suivante
  If FeuilleExiste(maFeuille.Cells(i, maColonne)) Then GoTo Suivant
  ' ajout d'une feuille à la fin
  Sheets(2).Copy after:=Sheets(Worksheets.Count)
  ' nom de la feuille = valeur de la cellule
  Sheets(Worksheets.Count).Name = maFeuille.Cells(i, maColonne)
  Sheets(Worksheets.Count).Cells(1, 4) = maFeuille.Cells(i, 3)
Suivant:
Next
'on retourne à la feuille d'origine
maFeuille.Select
Set maFeuille = Nothing

End Sub

Sub Bonus()

Dim derLi As Long
Dim k As Integer
Dim maColonne As Integer

maColonne = 5 ' a ajuster

derLi = Columns(maColonne).Find("*", , , , , xlPrevious).Row

For k = 3 To derLi + 3

    Sheets(k).Select
    Range("F57").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pays").Select
    Cells(k + 2, 11).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
Next
End Sub

Sub Supprimer_tout()

Range("A2:K12510").Select
    Selection.ClearContents
    Range("A1").Select

End Sub

Function FeuilleExiste(Nom$) As Boolean 'Ti
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
End Function

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = maColonne Then AjoutFeuilles
End Sub

NB2: Je cherche aussi une façon de pouvoir créer automatiquement un lien hypertext qui en cliquant sur le nom dans la première feuille, me renvoie à la feuille du nom correspondant.
 

Pierrot93

XLDnaute Barbatruc
Re : Erreur d'execution 9 - Incompréhensible et lien cellule/Fleuille automatique

Bonsoir Bolinette

lorsque tu as le message d'erreur, et que tu click sur "débogage", quelle est la ligne de code qui pose problème (surlignée en jaune) ?

bonne soirée
@+
 

Gorfael

XLDnaute Barbatruc
Re : Erreur d'execution 9 - Incompréhensible et lien cellule/Fleuille automatique

Salut Bolinette et le forum
On joue à quoi ? le premier qui trouve gagne quoi ? 4 macros et une Function et dedans il y a une erreur. Déjà qu'avec juste un code, si on ne sait pas quel est le problème, si on ne nous indique pas la ligne de code incriminée c'est dur, alors là...
J'ai déjà un fichier excel avec des macro (peut être pas les meilleurs...) mais ça marche.
Donc, tu n'as pas d'erreur! :eek:

SupprimeFeuille() : utiliser un select case, juste pour la fonction Else... Une simple fonction if suffit.
Le but des DisplayAlert ? Pas être embêté par une erreur ? Ce ne serait pas mieux de comprendre ce que l'on fait ?

AjoutFeuilles()
Code:
If FeuilleExiste(maFeuille.Cells(i, maColonne)) Then GoTo Suivant
  Sheets(2).Copy after:=Sheets(Worksheets.Count)
  Sheets(Worksheets.Count).Name = maFeuille.Cells(i, maColonne)
  Sheets(Worksheets.Count).Cells(1, 4) = maFeuille.Cells(i, 3)
Suivant:
C'est une solution. Personnellement, j'évite les sauts :
Code:
If not(FeuilleExiste(maFeuille.Cells(i, maColonne))) Then
    Sheets(2).Copy after:=Sheets(Worksheets.Count)
    Sheets(Worksheets.Count).Name = maFeuille.Cells(i, maColonne)
    Sheets(Worksheets.Count).Cells(1, 4) = maFeuille.Cells(i, 3)
End if
Sub Bonus()
Code:
maColonne = 5 ' a ajuster
derLi = Columns(maColonne).Find("*", , , , , xlPrevious).Row
For k = 3 To derLi + 3
     Sheets(k).Select
Pas sûr de comprendre le fonctionnement de ce bout de code : tu as les noms des feuille de E1 à Ex et tu as 2 feuilles (en place 1 et 2) qui ne sont pas comptées. et tu mets les valeurs de la cellule F57 de chaque feuille en colonne K à partir de la ligne 2. N'ayant que les macros, c'est dur de comprendre

Supprimer_tout() moi, je mettrais
Code:
Range("A2:K12510").ClearContents
Range("A1").Select
FeuilleExiste(Nom$) Je préfère maîtriser(éviter plutôt) les erreurs que de m'en servir. Mais chacun sa méthode

Worksheet_Change(ByVal Target As Range) Je ne comprends pas l'utilité de passer par une autre macro utilisée en sous-programme. Mais comme je dis, chacun sa méthode.
Je cherche aussi une façon de pouvoir créer automatiquement un lien hypertext qui en cliquant sur le nom dans la première feuille, me renvoie à la feuille du nom correspondant.
Code:
ActiveSheet.Hyperlinks.Add Anchor:=[A5], Address:="", SubAddress:="France!A1", TextToDisplay:="France"
Créera sur la feuille active en A5 le lien de nom "France" qui renverra à la cellule A1 de la feuille "France".
A+
 
Dernière édition:

Bolinette

XLDnaute Nouveau
Re : Erreur d'execution 9 - Incompréhensible et lien cellule/Fleuille automatique

Merci beaucoup de votre aide et de votre réactivité
Désolé, j'avoue que le post n'était pas très bien posé. Enfin le problème est résolu.
Bonne continuation
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 980
Membres
103 997
dernier inscrit
SET2A