Enregistrement VBA xls en xlsx

Résolu/Fermé
sethin Messages postés 11 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 10 août 2016 - 9 août 2016 à 12:36
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 - 10 août 2016 à 10:10
Bonjour,

Me revoici pour une ultime question (jusqu'à la prochaine). ccm81 m'a créé une macro VBA pour un planning et enregistrer au format xls. (256 colonnes max). Lorsque je transfère cette macro sur mon fichier en xlsx (besoin de plus de 256 colonnes) je ne peux pas l'enregistrer.
J'ai essayé d'enregistrer sous un format xlsm (comme vu dans certaines réponses du forum) mais cela ne fonctionnent toujours pas.
Existe-t-il un moyen d'enregistrer une macro xls sous un format xlsx ?
A voir également:

6 réponses

Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
9 août 2016 à 19:45
Re,

sous ta macro colle ce code

Public Sub MFC()
Dim plage As Range
Set plage = Range("E4:OK60")
Cells.FormatConditions.Delete
plage.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=JOURSEM(E$4;2)>5"
plage.FormatConditions(plage.FormatConditions.Count).SetFirstPriority
plage.FormatConditions(1).Interior.ColorIndex = 15
plage.FormatConditions(1).StopIfTrue = False
plage.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=NB.SI('FERIES-TAOPM'!E2:E16;PLANNING!E4)"
plage.FormatConditions(plage.FormatConditions.Count).SetFirstPriority
plage.FormatConditions(1).Interior.ColorIndex = 19
plage.FormatConditions(1).Font.ColorIndex = 3
plage.FormatConditions(1).StopIfTrue = False
plage.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=NB.SI('FERIES-TAOPM'!$B$2:$B$14;E$4)"
plage.FormatConditions(plage.FormatConditions.Count).SetFirstPriority
plage.FormatConditions(1).Interior.ColorIndex = 19
plage.FormatConditions(1).Font.ColorIndex = 3
plage.FormatConditions(1).StopIfTrue = False
End Sub


ensuite à la fin de ta macro Public Sub defusionner() juste avant End Sub
saisir Call MFC
comme cela
Next cel
Call MFC
End Sub
1
sethin Messages postés 11 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 10 août 2016
10 août 2016 à 09:06
Ca fonctionne très très bien. Merci beaucoup à Mike-31 et ccm81 pour leur aide très appréciable.
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
Modifié par Mike-31 le 9/08/2016 à 12:49
Bonjour,

si ton fichier contient des codes VBA, tu ne peux pas utiliser ou enregistrer sous l'extension XLSX mais sélectionner l'extension XLSM
ensuite si tes codes ne fonctionnent pas il s'agit d'un niveau de protection trop élevé
alors commence par enregistrer sous le fichier et donne lui l'extension XLSM
puis onglet Développeur/module Code/Sécurité des macros/Activer toutes les macros(non recommandé) .........
enregistre le fichier avant de le fermer et de l'ouvrir à nouveau
accepte l'activation des macros et teste ton fichier
si tout fonctionne je t'expliquerai comment remonter le niveau de protection
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
sethin Messages postés 11 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 13:04
Merci.

Tout fonctionne au format xlsm. J'ai pu conserver la macro et toutes mes colonnes.
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
9 août 2016 à 13:08
Re,

as tu contrôlé le niveau de protection de tes macros

regarde la procédure que j'ai rédigé pour relever le niveau et travailler avec un niveau de sécurité élevé pour ta sécurité et celle de ton système
https://www.commentcamarche.net/faq/21009-excel-signature-numerique
0
sethin Messages postés 11 Date d'inscription jeudi 4 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 14:00
Merci Mike-31,

Je vais voir ce que cela donne en situation car nous allons être plusieurs à travailler sur ce fichier avec des ordinateurs différents, des sessions différentes et des niveaux d'informatiques différents.

Également je viens de me rendre compte d'un autre problème, je joins d'abord le fichier puis j'explique où est le problème :

https://www.cjoint.com/c/FHjlTjOqlDL

1- sélectionner une cellule dans la plage E6:OK60
2- regarder les 3 mises en forme conditionnelle (leur plage d'application est E4:OK60, ce qui est normal)
3- sélectionner une plage (admettons J12:N12) et fusionner la plage (ce qui équivaut à attribuer une tâche sur plusieurs jours)
4- malheureusement cette tâche est annulée et pour la plage en question (J12:N12) appliquons la macro (merci ccm81) Ctrl+d
5- en apparence tout redevient comme avant
6- sélectionnons une cellule dans la plage E6:OK60 et regardons les mises en forme conditionnelle.
7- les plages d'application ne sont plus du tout comme à l'origine (pour rappel original d'application =E4:OK60)

Est-il possible de remédier à cela ? Peut-on avoir des plages d'application verrouillées pour les mises en forme conditionnelle ? via VBA? via mfc ?

SI besoin pour cette question, je peux réouvrir un sujet avec un titre plus adéquat...

Merci à ceux qui me liront
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
9 août 2016 à 15:22
Re,

le problème est que tu as plusieurs mise en forme conditionnelles, je regarde voir comment contourner le problème
0
Mike-31 Messages postés 18337 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 27 septembre 2024 5 099
10 août 2016 à 10:10
Re,

alors si tes attentes sont satisfaites, passe le statut de cette discussion pertinente en résolu qu'elle serve de référence
ou confirme le nous qu'on le fasse pour toi
0