Changement de container

6 réponses
Avatar
Fredo P.
Bonjour ,
À cause d'un contenu illisible qui émet un message d'erreur à chaque
ouverture du classeur X, j'ai entrepris de changer tout le contenu d'un
classeur X vers un classeur Y sans copier intégralement l'ensemble d'une
seule opération mais feuille par feuille, module VBA par module VBA. je
souhaiterais maintenant transposer tous les noms de plages nommées, j'ai
effectué la liste des noms sur X avec cette procédure:
Sub nomdesplages()
Dim a$, j%
With ActiveWorkbook
For j = .Names.Count To 1 Step -1
Cells(j, 1) = .Names(j).Name
Cells(j, 2) = .Parent.Names(j)
Next
End With
End Sub
Après avoir éliminé de la liste les "REF" et autres obsolètes, je souhaite
les créer en lieu et place sur Y, un pt coup de main svp.

6 réponses

Avatar
MichD
Bonjour,
Pour copier toutes les feuilles d'un classeur vers un autre classeur :
'-------------
Sub Copie_Feuilles_Vers_Un_Autre_Classeur()
Sheets.copy
End Sub
'-------------
Pour copier les modules standards vers le nouveau classeur :
Ouvre l'éditeur de code (VBA)
Quand l'ancien et le nouveau classeur sont ouverts,
tu sélectionnes à tour de rôle chacun des modules, tu maintiens le
bouton droit de la souris enfoncé et tu glisses le module de l'ancien
vers le nouveau classeur.
Il reste à faire un copier-coller du code que tu as dans le Thisworkbook.
Enregistre le classeur et le tour est joué.
MichD
Le 13/04/19 à 10:08, Fredo P. a écrit :
Bonjour ,
À cause d'un contenu illisible qui émet un message d'erreur à chaque
ouverture du classeur X, j'ai entrepris de changer tout le contenu d'un
classeur X vers un classeur Y sans copier intégralement l'ensemble d'une
seule opération mais feuille par feuille, module VBA par module VBA. je
souhaiterais maintenant transposer tous les noms de plages nommées, j'ai
effectué la liste des noms sur X avec cette procédure:
Sub nomdesplages()
   Dim a$, j%
   With ActiveWorkbook
       For j = .Names.Count To 1 Step -1
          Cells(j, 1) = .Names(j).Name
          Cells(j, 2) = .Parent.Names(j)
       Next
   End With
End Sub
Après avoir éliminé de la liste les "REF" et autres obsolètes, je
souhaite les créer en lieu et place sur Y, un pt coup de main svp.
Avatar
Fredo P.
Oui Mich.D
Tout cela ne m'a pas posé de pb, pour éviter de recopier ce contenu
illisible, j'ai procédé autrement pour les feuilles, j'ai en premier ouvert
un classeur neuf créé ensuite les feuilles avec les mêmes correspondances de
noms d'onglets avec les noms internes (Feuil1;Feuil2 Etc...) et ensuite les
valeurs binaires seules. Maintenant ce que je souhaitais obtenir, c'est le
moyen de créer les noms de plages, les mêmes que ceux du premiers classeurs
corrompu.
J'ai essayé ceci qui bloc sur la ligne sensée attribuer les noms de plages.
Sub nomdesplages()
Dim a$, j%
With ActiveWorkbook
For j = 1 To .Names.Count
Cells(j, 1) = .Names(j).Name
Cells(j, 2) = .Parent.Names(j)
Workbooks("Cdmes").Names.Add Name:=.Names(j).Name,
RefersToR1C1:= .Parent.Names(j)
Next
End With
End Sub
Avatar
MichD
Tu as essayé la méthode que je t'ai donnée et elle ne fonctionne pas?
La correction de ton code,
Remplace le nom du classeur "Workbooks("Classeur2")" par celui de ton
application, incluant l'extension si elle existe.
'----------------------
Sub nomdesplages()
Dim a$, j%
With ActiveWorkbook
For j = 1 To .Names.Count
Cells(j, 1) = .Names(j).Name
Cells(j, 2) = .Parent.Names(j)
Workbooks("Classeur2").Names.Add .Names(j).Name,
.Parent.Names(j)
Next
End With
End Sub
'----------------------
MichD
Avatar
Fredo P.
Voila, avec un peu de patience j"ai obtenu ce que j'attendais non sans
plusieurs essai.
Sub nomdesplages()
Dim a$, j%, Ad$, Nom$, Sh$
With ActiveWorkbook
For j = 1 To .Names.Count
Nom = .Names(j).Name
Sh = Mid(.Parent.Names(j), 2, InStr(.Parent.Names(j), "!") - 2) '=
.Parent.Names(j)
Ad = Right(.Parent.Names(j), Len(.Parent.Names(j)) -
InStr(.Parent.Names(j), "!"))
Workbooks("Cdmes419.xlsm").Names.Add Name:=Nom, RefersTo:="=" &
Sh & "!" & Ad
Next
End With
End Sub
"MichD" a écrit dans le message de groupe de discussion :
q8thpn$1o0q$
Tu as essayé la méthode que je t'ai donnée et elle ne fonctionne pas?
La correction de ton code,
Remplace le nom du classeur "Workbooks("Classeur2")" par celui de ton
application, incluant l'extension si elle existe.
'----------------------
Sub nomdesplages()
Dim a$, j%
With ActiveWorkbook
For j = 1 To .Names.Count
Cells(j, 1) = .Names(j).Name
Cells(j, 2) = .Parent.Names(j)
Workbooks("Classeur2").Names.Add .Names(j).Name,
.Parent.Names(j)
Next
End With
End Sub
'----------------------
MichD
Avatar
Fredo P.
Malgré la réussite du but premier, changer le contenant du contenu, j'ai
toujours ce message à l'ouverture du nouveau classeur "Contenu illisible
Etc... ", vider le dossier Temp comme vous l'aviez indiqué comme
l'application de Microsoft Office "Analyzer Tool 2.0 n'ont pas réglé ce pb
qui à Mon humble avis vient d'une MàJ XL récente.
"Fredo P." a écrit dans le message de groupe de discussion :
q8tjd1$1vad$
Voila, avec un peu de patience j"ai obtenu ce que j'attendais non sans
plusieurs essai.
Sub nomdesplages()
Dim a$, j%, Ad$, Nom$, Sh$
With ActiveWorkbook
For j = 1 To .Names.Count
Nom = .Names(j).Name
Sh = Mid(.Parent.Names(j), 2, InStr(.Parent.Names(j), "!") - 2) ' .Parent.Names(j)
Ad = Right(.Parent.Names(j), Len(.Parent.Names(j)) -
InStr(.Parent.Names(j), "!"))
Workbooks("Cdmes419.xlsm").Names.Add Name:=Nom, RefersTo:="=" &
Sh & "!" & Ad
Next
End With
End Sub
"MichD" a écrit dans le message de groupe de discussion :
q8thpn$1o0q$
Tu as essayé la méthode que je t'ai donnée et elle ne fonctionne pas?
La correction de ton code,
Remplace le nom du classeur "Workbooks("Classeur2")" par celui de ton
application, incluant l'extension si elle existe.
'----------------------
Sub nomdesplages()
Dim a$, j%
With ActiveWorkbook
For j = 1 To .Names.Count
Cells(j, 1) = .Names(j).Name
Cells(j, 2) = .Parent.Names(j)
Workbooks("Classeur2").Names.Add .Names(j).Name,
.Parent.Names(j)
Next
End With
End Sub
'----------------------
MichD
Avatar
MichD
Le 15/04/19 à 03:47, Fredo P. a écrit :
Contenu illisible

Bonjour,
Un fil où j'ai déjà donné un exemple de solutions. Cela dit, il y a
plusieurs avenues possibles et nul n’est une réponse suffisante à tous
les cas de figure. Cela rend la recherche d'une solution difficile.
https://answers.microsoft.com/fr-fr/office/forum/office_2010-excel/excel-a-rencontré-un-contenu-illisible/9de8acaa-6334-48ff-9cb4-d5d2d9f20b01?db=5
Si ce fichier ne contient pas des données sensibles, tu peux me
l'envoyer dans mon courriel et j'essaierai de l'ouvrir, et ce sans
aucune garantie.
MichD