Quid des Dim quand Call My_Sub...
Résolu
dhaze
Messages postés
109
Date d'inscription
Statut
Membre
Dernière intervention
-
dhaze Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
dhaze Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Salut, c'est encore moi :-)
J'ai une macro "solo" qui fonctionne très bien.
Mais quand je veux l'appeler d'une autre ça bug.
L'intérêt d'une première Sub et de déclarer des variables dans une macro courte (il y aura une quinzaine de Sub). La macro appelée sera toujours la même pour éviter les répétions, et alléger mon tableau au maximum.
La version appelée bloque à :
If Feuille_Existe(Sheets_Add_Name) Then
"Erreur de compilation:
Type d'argument ByRef incompatible"
La déclaration :
Sheets_Add_Name = "Nouvelle Feuille"
n'ait pas conservée à l'exécution de la deuxième macro ?
Ou y'a-t-il autre chose qui m'échappe ?
Lo.
J'ai une macro "solo" qui fonctionne très bien.
Mais quand je veux l'appeler d'une autre ça bug.
L'intérêt d'une première Sub et de déclarer des variables dans une macro courte (il y aura une quinzaine de Sub). La macro appelée sera toujours la même pour éviter les répétions, et alléger mon tableau au maximum.
Function Feuille_Existe(Feuille As String) As Boolean On Error Resume Next Feuille_Existe = Not Sheets(Feuille) Is Nothing End Function Private Sub Nouvelle_Feuille_Click() ' Dim Sheets_Add_Name As String Dim Range_Copy As String Sheets_Add_Name = "Nouvelle Feuille" Range_Copy = "Zone_Entete_Colonnes" Call Créer_Feuille_Type End Sub Sub Créer_Feuille_Type() ' Application.ScreenUpdating = False Dim Sheets_Add As Worksheet '--- Partie désactivée si passe par "Nouvelle_Feuille_Click" -------- 'Dim Sheets_Add_Name As String 'Sheets_Add_Name = "Nouvelle Feuille" '---------------------------------------------------------------------------------- If Feuille_Existe(Sheets_Add_Name) Then MsgBox "Une feuille " & """" & Sheets_Add_Name & """" & " existe déjà dans ce classeur.", vbExclamation, "Doublon" Exit Sub Else Set Sheets_Add = Sheets.Add(After:=Sheets(Sheets.Count)) Sheets_Add.Name = Sheets_Add_Name End If Worksheets("Feuille_Entete_Colonnes").Visible = xlSheetVisible Sheets("Feuille_Entete_Colonnes").Select '--- Partie désactivée si passe par "Nouvelle_Feuille_Click" -------- 'Range("Zone_Entete_Colonnes").Copy '--- Partie désactivée si autonome --------------------------------------------------- Range("Range_Copy").Copy '---------------------------------------------------------------------------------- Sheets(Sheets_Add.Name).Select Rows(1).Select With Selection .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteFormats .Application.CutCopyMode = False End With Worksheets("Feuille_Entete_Colonnes").Visible = xlSheetVeryHidden Application.ScreenUpdating = True End Sub Sub Créer_Feuille_Type_solo() ' 'Version solo OK ' Application.ScreenUpdating = False Dim Sheets_Add As Worksheet Dim Sheets_Add_Name As String Sheets_Add_Name = "Nouvelle Feuille" If Feuille_Existe(Sheets_Add_Name) Then MsgBox "Une feuille " & """" & Sheets_Add_Name & """" & " existe déjà dans ce classeur.", vbExclamation, "Doublon" Exit Sub Else Set Sheets_Add = Sheets.Add(After:=Sheets(Sheets.Count)) Sheets_Add.Name = Sheets_Add_Name End If Worksheets("Feuille_Entete_Colonnes").Visible = xlSheetVisible Sheets("Feuille_Entete_Colonnes").Select Range("Zone_Entete_Colonnes").Copy Sheets(Sheets_Add.Name).Select Rows(1).Select With Selection .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteFormats .Application.CutCopyMode = False End With Worksheets("Feuille_Entete_Colonnes").Visible = xlSheetVeryHidden Application.ScreenUpdating = True End Sub
La version appelée bloque à :
If Feuille_Existe(Sheets_Add_Name) Then
"Erreur de compilation:
Type d'argument ByRef incompatible"
La déclaration :
Sheets_Add_Name = "Nouvelle Feuille"
n'ait pas conservée à l'exécution de la deuxième macro ?
Ou y'a-t-il autre chose qui m'échappe ?
Lo.
A voir également:
- Quid des Dim quand Call My_Sub...
- Call identifier 2.08 - Télécharger - Téléphonie & Visio
- Code call of duty : black ops ps3 zombie munition illimité ✓ - Forum Jeux vidéo
- Call of duty ww2 cross play ✓ - Forum jeux en ligne
- Hpy call solver ✓ - Forum Jeux PC
- Call of duty advanced warfare patch fr - Forum Xbox 360
3 réponses
Bonjour,
mettre:
au debut du module pour avoir une declaration de variables globales pour le module
mettre:
Dim Sheets_Add_Name As String Dim Range_Copy As String
au debut du module pour avoir une declaration de variables globales pour le module