Quid des Dim quand Call My_Sub...
Résolu
dhaze
Messages postés
113
Date d'inscription
Statut
Membre
Dernière intervention
-
dhaze Messages postés 113 Date d'inscription Statut Membre Dernière intervention -
dhaze Messages postés 113 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 PS3
- Call of duty ww2 cross play ✓ - Forum jeux en ligne
- Call of duty traduction - Forum Jeux vidéo
- Danseuse call on me ✓ - Forum Musique / Radio / Clip
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