Bonjour,
j'ai crée un usf dans 1classeur (c'est un graphique)
pas de probleme tout fonctionne 1 bouton sur la feuillel' usf s'ouvre
je deplace par copie cette feuille dans le classeur de compta
sans rien renommer l'usf ne s'ouvre plus
erreur 13 (incompatibilité de type) je tourne en rond
j'ai plusieurs user dans ce classeur (qui sont tous nommés)
si vous avez une solution a mon probleme je suis preneur
merci
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
eneric
du coup j'ai recrée le usf dans le bon classeur et remis les divers codes ca fonctionne mais je souhaiterais comprendre la cause de l'erreur 13 merci a vous
-- eneric
du coup j'ai recrée le usf dans le bon classeur
et remis les divers codes ca fonctionne
mais je souhaiterais comprendre la cause de l'erreur 13
merci a vous
du coup j'ai recrée le usf dans le bon classeur et remis les divers codes ca fonctionne mais je souhaiterais comprendre la cause de l'erreur 13 merci a vous
-- eneric
michdenis
Bonjour,
Il faut regarder si le chemin et le nom de la macro du bouton dans le nouveau classeur correspond à la location où se situe la macro attachée au bouton.
x = Me.Shapes(1).OLEFormat.Object.OnAction x prend la valeur suivante : "Classeur1.xls!Feuil1.MaMacro
Je copie la feuil1 du classeur Classeur1.xls Lorsque tu copies la feuille où était le bouton vers un nouveau classeur, dans le classeur d'origine, le nom du fichier du bouton change et prend la valeur du classeur de destination. x prend la valeur suivante : "NouveauClasseur!Feuil1.MaMacro
Il s'agit de redéfinir la propriété "OnAction" du bouton comme ceci dans le classeur d'origine : Me.Shapes(1).OLEFormat.Object.OnAction = "Classeur1.xls!Feuil1.MaMacro"
Si tu as plusieurs boutons, tu peux faire le truc en utilisant une macro : dans ton classeur d'origine : '--------------------------- Sub Test() AttributionNomMacro ThisWorkbook End Sub '---------------------------
Sub AttributionNomMacro(Wk As Workbook)
Dim B As Object, NomMacro As String For Each sh In Worksheets For Each B In sh.Shapes If TypeName(B.OLEFormat.Object) = "Button" Then NomMacro = B.OLEFormat.Object.OnAction If NomMacro <> "" Then NomMacro = Mid(NomMacro, InStrRev(NomMacro, "!") + 1) NomMacro = Wk.Name & "!" & NomMacro B.OLEFormat.Object.OnAction = NomMacro End If End If Next Next
End Sub '---------------------------
"eneric" a écrit dans le message de groupe de discussion :
Bonjour, j'ai crée un usf dans 1classeur (c'est un graphique) pas de probleme tout fonctionne 1 bouton sur la feuillel' usf s'ouvre je deplace par copie cette feuille dans le classeur de compta sans rien renommer l'usf ne s'ouvre plus erreur 13 (incompatibilité de type) je tourne en rond j'ai plusieurs user dans ce classeur (qui sont tous nommés) si vous avez une solution a mon probleme je suis preneur merci
-- eneric
Bonjour,
Il faut regarder si le chemin et le nom de la macro du bouton
dans le nouveau classeur correspond à la location où se situe
la macro attachée au bouton.
x = Me.Shapes(1).OLEFormat.Object.OnAction
x prend la valeur suivante : "Classeur1.xls!Feuil1.MaMacro
Je copie la feuil1 du classeur Classeur1.xls
Lorsque tu copies la feuille où était le bouton vers un nouveau classeur,
dans le classeur d'origine, le nom du fichier du bouton change et prend
la valeur du classeur de destination.
x prend la valeur suivante : "NouveauClasseur!Feuil1.MaMacro
Il s'agit de redéfinir la propriété "OnAction" du bouton comme ceci
dans le classeur d'origine :
Me.Shapes(1).OLEFormat.Object.OnAction = "Classeur1.xls!Feuil1.MaMacro"
Si tu as plusieurs boutons, tu peux faire le truc en utilisant une macro :
dans ton classeur d'origine :
'---------------------------
Sub Test()
AttributionNomMacro ThisWorkbook
End Sub
'---------------------------
Sub AttributionNomMacro(Wk As Workbook)
Dim B As Object, NomMacro As String
For Each sh In Worksheets
For Each B In sh.Shapes
If TypeName(B.OLEFormat.Object) = "Button" Then
NomMacro = B.OLEFormat.Object.OnAction
If NomMacro <> "" Then
NomMacro = Mid(NomMacro, InStrRev(NomMacro, "!") + 1)
NomMacro = Wk.Name & "!" & NomMacro
B.OLEFormat.Object.OnAction = NomMacro
End If
End If
Next
Next
End Sub
'---------------------------
"eneric" <enericV@cegetel.net> a écrit dans le message de groupe de discussion :
mn.0a927d9c711cd9e5.51150@cegetel.net...
Bonjour,
j'ai crée un usf dans 1classeur (c'est un graphique)
pas de probleme tout fonctionne 1 bouton sur la feuillel' usf s'ouvre
je deplace par copie cette feuille dans le classeur de compta
sans rien renommer l'usf ne s'ouvre plus
erreur 13 (incompatibilité de type) je tourne en rond
j'ai plusieurs user dans ce classeur (qui sont tous nommés)
si vous avez une solution a mon probleme je suis preneur
merci
Il faut regarder si le chemin et le nom de la macro du bouton dans le nouveau classeur correspond à la location où se situe la macro attachée au bouton.
x = Me.Shapes(1).OLEFormat.Object.OnAction x prend la valeur suivante : "Classeur1.xls!Feuil1.MaMacro
Je copie la feuil1 du classeur Classeur1.xls Lorsque tu copies la feuille où était le bouton vers un nouveau classeur, dans le classeur d'origine, le nom du fichier du bouton change et prend la valeur du classeur de destination. x prend la valeur suivante : "NouveauClasseur!Feuil1.MaMacro
Il s'agit de redéfinir la propriété "OnAction" du bouton comme ceci dans le classeur d'origine : Me.Shapes(1).OLEFormat.Object.OnAction = "Classeur1.xls!Feuil1.MaMacro"
Si tu as plusieurs boutons, tu peux faire le truc en utilisant une macro : dans ton classeur d'origine : '--------------------------- Sub Test() AttributionNomMacro ThisWorkbook End Sub '---------------------------
Sub AttributionNomMacro(Wk As Workbook)
Dim B As Object, NomMacro As String For Each sh In Worksheets For Each B In sh.Shapes If TypeName(B.OLEFormat.Object) = "Button" Then NomMacro = B.OLEFormat.Object.OnAction If NomMacro <> "" Then NomMacro = Mid(NomMacro, InStrRev(NomMacro, "!") + 1) NomMacro = Wk.Name & "!" & NomMacro B.OLEFormat.Object.OnAction = NomMacro End If End If Next Next
End Sub '---------------------------
"eneric" a écrit dans le message de groupe de discussion :
Bonjour, j'ai crée un usf dans 1classeur (c'est un graphique) pas de probleme tout fonctionne 1 bouton sur la feuillel' usf s'ouvre je deplace par copie cette feuille dans le classeur de compta sans rien renommer l'usf ne s'ouvre plus erreur 13 (incompatibilité de type) je tourne en rond j'ai plusieurs user dans ce classeur (qui sont tous nommés) si vous avez une solution a mon probleme je suis preneur merci
-- eneric
eneric
merci michdenis je m'appretais a verifier tes infos lorsque ..... dans la serie des trucs incomprehesibles je me trouve avec mes 2 feulles suplementaires et tout fonctionne normalement l-) j'halucine il y a vraiment des mysteres !!!!!!! >:| >:|
-- eneric
merci michdenis
je m'appretais a verifier tes infos lorsque .....
dans la serie des trucs incomprehesibles
je me trouve avec mes 2 feulles suplementaires
et tout fonctionne normalement l-)
j'halucine il y a vraiment des mysteres !!!!!!! >:| >:|
merci michdenis je m'appretais a verifier tes infos lorsque ..... dans la serie des trucs incomprehesibles je me trouve avec mes 2 feulles suplementaires et tout fonctionne normalement l-) j'halucine il y a vraiment des mysteres !!!!!!! >:| >:|
-- eneric
michdenis
| la serie des trucs incomprehesibles | je me trouve avec mes 2 feulles suplementaires | et tout fonctionne normalement
ça relève plus du hasard que du miracle ;-)
Un complément d'information si ça t'intéresse de comprendre !
En supposant que les macros sont enregistrées dans le module de la feuille copiée "Feuil1"
Dans l'expression suivante : la propriété "OnAction" utilise le "nom de la propriété "NAME" affiché dans la fenêtre de l'éditeur de code et non le nom de l'onglet de la feuille de calcul.
Si tu as un bouton lié à une macro dans la "feuil1" (Propriété name) du classeur Classeur1.xls, la propriété "OnAction" retourne ce qui suit :
x = Me.Shapes(1).OLEFormat.Object.OnAction x = "Classeur1.xls!Feuil1.MaMacro
Si tu copies la feuille dans le même classeur, le bouton de la nouvelle feuille continuera d'afficher ""Classeur1.xls!Feuil1.MaMacro" et non le le nom de la propriété "name" de la nouvelle feuille. Comme la "macro" et la "feuil1" existe toujours dans le classeur, il n'y a pas vraiment de problème...mais si tu supprime la feuil1, le bouton dans la nouvelle feuille ne pourra pas fonctionner, car il n'est pas lié à la macro de son propre module feuille.
Dans le cas où tu copier la feuille vers un nouveau classeur : Si par pur hasard, la nouvelle feuille créée dans le nouveau classeur reçoit la même propriété "Name" qu'il avait dans son classeur original, il n'y aura pas de problème ! Dans tous les autres cas, le bouton de la nouvelle feuille ne fonctionnera pas. Lors de la copie, Excel sait adapter tout seul le nom du nouveau classeur où la macro se trouve, mais il est incapable d'adapter le nom (propriété Name) de la feuille si suite à une copie, cette propriété "Name" a changé.
Dans le cas présent, si besoin, j'ai légèrement modifié la macro pour tenir compte du fait que les macros sont dans des modules autre que standard. '---------------------------------------- Sub Test() AttributionNomMacro ThisWorkbook End Sub '---------------------------------------- Sub AttributionNomMacro(Wk As Workbook)
Dim B As Object, NomMacro As String For Each sh In Worksheets For Each B In sh.Shapes If TypeName(B.OLEFormat.Object) = "Button" Then NomMacro = B.OLEFormat.Object.OnAction If NomMacro <> "" Then NomMacro = Mid(NomMacro, InStrRev(NomMacro, ".") + 1) NomMacro = Wk.Name & "!" & sh.CodeName & "." & NomMacro B.OLEFormat.Object.OnAction = NomMacro End If End If Next Next End Sub '----------------------------------------
| la serie des trucs incomprehesibles
| je me trouve avec mes 2 feulles suplementaires
| et tout fonctionne normalement
ça relève plus du hasard que du miracle ;-)
Un complément d'information si ça t'intéresse de comprendre !
En supposant que les macros sont enregistrées
dans le module de la feuille copiée "Feuil1"
Dans l'expression suivante : la propriété "OnAction"
utilise le "nom de la propriété "NAME" affiché dans la
fenêtre de l'éditeur de code et non le nom de l'onglet
de la feuille de calcul.
Si tu as un bouton lié à une macro dans la "feuil1" (Propriété name)
du classeur Classeur1.xls, la propriété "OnAction" retourne ce
qui suit :
x = Me.Shapes(1).OLEFormat.Object.OnAction
x = "Classeur1.xls!Feuil1.MaMacro
Si tu copies la feuille dans le même classeur, le bouton de la
nouvelle feuille continuera d'afficher ""Classeur1.xls!Feuil1.MaMacro"
et non le le nom de la propriété "name" de la nouvelle feuille.
Comme la "macro" et la "feuil1" existe toujours dans le classeur,
il n'y a pas vraiment de problème...mais si tu supprime la feuil1,
le bouton dans la nouvelle feuille ne pourra pas fonctionner, car il
n'est pas lié à la macro de son propre module feuille.
Dans le cas où tu copier la feuille vers un nouveau classeur :
Si par pur hasard, la nouvelle feuille créée dans le nouveau classeur
reçoit la même propriété "Name" qu'il avait dans son classeur original,
il n'y aura pas de problème ! Dans tous les autres cas, le bouton de la
nouvelle feuille ne fonctionnera pas. Lors de la copie, Excel sait adapter
tout seul le nom du nouveau classeur où la macro se trouve, mais il est
incapable d'adapter le nom (propriété Name) de la feuille si suite à une
copie, cette propriété "Name" a changé.
Dans le cas présent, si besoin, j'ai légèrement modifié la macro pour
tenir compte du fait que les macros sont dans des modules autre que standard.
'----------------------------------------
Sub Test()
AttributionNomMacro ThisWorkbook
End Sub
'----------------------------------------
Sub AttributionNomMacro(Wk As Workbook)
Dim B As Object, NomMacro As String
For Each sh In Worksheets
For Each B In sh.Shapes
If TypeName(B.OLEFormat.Object) = "Button" Then
NomMacro = B.OLEFormat.Object.OnAction
If NomMacro <> "" Then
NomMacro = Mid(NomMacro, InStrRev(NomMacro, ".") + 1)
NomMacro = Wk.Name & "!" & sh.CodeName & "." & NomMacro
B.OLEFormat.Object.OnAction = NomMacro
End If
End If
Next
Next
End Sub
'----------------------------------------
| la serie des trucs incomprehesibles | je me trouve avec mes 2 feulles suplementaires | et tout fonctionne normalement
ça relève plus du hasard que du miracle ;-)
Un complément d'information si ça t'intéresse de comprendre !
En supposant que les macros sont enregistrées dans le module de la feuille copiée "Feuil1"
Dans l'expression suivante : la propriété "OnAction" utilise le "nom de la propriété "NAME" affiché dans la fenêtre de l'éditeur de code et non le nom de l'onglet de la feuille de calcul.
Si tu as un bouton lié à une macro dans la "feuil1" (Propriété name) du classeur Classeur1.xls, la propriété "OnAction" retourne ce qui suit :
x = Me.Shapes(1).OLEFormat.Object.OnAction x = "Classeur1.xls!Feuil1.MaMacro
Si tu copies la feuille dans le même classeur, le bouton de la nouvelle feuille continuera d'afficher ""Classeur1.xls!Feuil1.MaMacro" et non le le nom de la propriété "name" de la nouvelle feuille. Comme la "macro" et la "feuil1" existe toujours dans le classeur, il n'y a pas vraiment de problème...mais si tu supprime la feuil1, le bouton dans la nouvelle feuille ne pourra pas fonctionner, car il n'est pas lié à la macro de son propre module feuille.
Dans le cas où tu copier la feuille vers un nouveau classeur : Si par pur hasard, la nouvelle feuille créée dans le nouveau classeur reçoit la même propriété "Name" qu'il avait dans son classeur original, il n'y aura pas de problème ! Dans tous les autres cas, le bouton de la nouvelle feuille ne fonctionnera pas. Lors de la copie, Excel sait adapter tout seul le nom du nouveau classeur où la macro se trouve, mais il est incapable d'adapter le nom (propriété Name) de la feuille si suite à une copie, cette propriété "Name" a changé.
Dans le cas présent, si besoin, j'ai légèrement modifié la macro pour tenir compte du fait que les macros sont dans des modules autre que standard. '---------------------------------------- Sub Test() AttributionNomMacro ThisWorkbook End Sub '---------------------------------------- Sub AttributionNomMacro(Wk As Workbook)
Dim B As Object, NomMacro As String For Each sh In Worksheets For Each B In sh.Shapes If TypeName(B.OLEFormat.Object) = "Button" Then NomMacro = B.OLEFormat.Object.OnAction If NomMacro <> "" Then NomMacro = Mid(NomMacro, InStrRev(NomMacro, ".") + 1) NomMacro = Wk.Name & "!" & sh.CodeName & "." & NomMacro B.OLEFormat.Object.OnAction = NomMacro End If End If Next Next End Sub '----------------------------------------
eneric
bonjour a toi je te remercie pour toutes tes explications , qui viennent d'integrer mon classeur (papier) je viens encore d'apprendre et ce n'est surement pas fini la prochaine fois je ferai attention (promis juré) bonne journée à tous :')
-- eneric
bonjour a toi
je te remercie pour toutes tes explications ,
qui viennent d'integrer mon classeur (papier)
je viens encore d'apprendre et ce n'est surement pas fini
la prochaine fois je ferai attention (promis juré)
bonne journée à tous
:')
bonjour a toi je te remercie pour toutes tes explications , qui viennent d'integrer mon classeur (papier) je viens encore d'apprendre et ce n'est surement pas fini la prochaine fois je ferai attention (promis juré) bonne journée à tous :')