gestion des zones nommées
Le
magic-dd

Bonjour à tous
il pleut chez vous??
bref, voici ma question
j'ai un classeur avec plusieurs feuilles, et j'ai des zones nommées faite=
s avec insertion zone definir.
j'aimerai copier toutes ces zones dans tous les classeurs existants et qui =
ont besoin de ces fameuses zones par vba par ex.
est ce possible ou dois je le faire manuellement.
merci d'avance
il pleut chez vous??
bref, voici ma question
j'ai un classeur avec plusieurs feuilles, et j'ai des zones nommées faite=
s avec insertion zone definir.
j'aimerai copier toutes ces zones dans tous les classeurs existants et qui =
ont besoin de ces fameuses zones par vba par ex.
est ce possible ou dois je le faire manuellement.
merci d'avance
Ceci copie tous les NOMS qui représentent des plages de cellules.
Il reste à adapter la destination où ces plages seront copiées.
'--------------------------------------------------
Sub test()
Dim C As Name
On Error Resume Next
'Une boucle sur chacun des "NOMS" du classeur
For Each C In ThisWorkbook.Names
'Teste si le NOM représente une plage
If TypeName(Range(C.Name)) = "Range" Then
'Si aucune erreur n’est générée, le NOM
'représente une plage de celules
If Err = 0 Then
'copie de la plage vers la destination de ton choix, à adapter
Range(C.Name).Copy Worksheets("Feuil2").Range("A1")
Else
'Si une erreur est générée, on l'efface
Err.Clear
End If
End If
Next
End Sub
'--------------------------------------------------
Si tu veux autre chose, il faut le dire!
MichD
---------------------------------------------------------------
donc je viens de faire un test et je pense m'etre mal expliqué
je reprends
je possede un classeur nommé performance 102
Dans ce classeur j'ai 2 feuilles appellées 102TBM et 102AJE
ce classeur comporte grand nombre de zones nommées faisant reference ou à 102TBM ou 102AJE.
ces deux feuilles comporte les memes tableau sur la structure mais pas forc ement le meme de nombre de ligne remplies, d'ou ces zones nommées faisant reference ou à 102TBM ou 102AJE.
pour exemple ma feuille 102TBM aura comme zone nommée
dispo1 ÞCALER(102TBM!$B$2;NBVAL(102TBM!$A:$A)-3;0;3)
et ma feuille 102JET aura comme zone nommée
dispo2 ÞCALER(102JET!$B$2;NBVAL(102JET!$A:$A)-3;0;3)
donc ces zones nommées je souhaiterai les reprendre dans un autre classeu r appelé Performance 133 qui lui comporte 4 feuilles
j'aurais donc dispo1, dispo2, dispo3 et dispo 4 pour faire reference à ch aque feuille
j'espere avoir été un peu plus précis dans mes commentaires
merci
voila ce qui en ressort, peut etre a simplifier
Sub test22()
ActiveWorkbook.Names.Add Name:="dd", RefersToR1C1:= _
"=OFFSET(dd!R2C1,COUNTA(dd!C1)-3,0,3)"
ActiveWorkbook.Names.Add Name:="ddbis", RefersToR1C1:= _
"=OFFSET(Feuil2!R2C1,COUNTA(Feuil2!C1)-3,0,3)"
ActiveWorkbook.Names.Add Name:="waouh", RefersToR1C1:= _
"=OFFSET(Feuil3!R2C1,COUNTA(Feuil3!C1)-3,0,3)"
End Sub
il ne me restera plus qu'a faire un copier coller dans mon nouveau classeur et changer le nom des feuilles et zou lancer la macro
c'est un peu rustique mais bon je ne sais mieux faire
ce qui me gène le plus c'est le referencement des coordonnées en R1C1 p lutot qu'en A1
| autre classeur appelé Performance 133 qui lui comporte 4 feuilles
Qu'est-ce que cela veut dire?
Tu veux recréer les mêmes noms mais cette fois-ci dans le nouveau classeur?
Tu veux copier ces plages de cellules des anciens classeurs vers le nouveau
classeur?
Est-ce que ce nouveau classeur Existe-t-il ?
Si tu veux copier la totalité d'une feuille d'un classeur à un autre :
Workbooks("Classeur_Source.xls").Sheets("NomFeuilleAcopier").Copy _
after:=Workbooks("Classeur_destination.xls").Sheets(1)
MichD
---------------------------------------------------------------
oui je veux recreer les noms dans le nouveau classeur
oui mais il faudra que je change juste le nom de la feuille et du classeur
ce classeur existe et les autres aussi
sinon n'est-il pas possible d'avoir un nom valable pour toutes les feuilles d'un classeur ?
premières feuilles :
'---------------------------------------
Sub test()
With ActiveWorkbook
.Names.Add Name:="dd", RefersTo:= _
"=OFFSET(" & Sheets(1).Name & "!R2C1,COUNTA(" & Sheets(1).Name &
"!C1)-3,0,3)"
.Names.Add Name:="ddbis", RefersToR1C1:= _
"=OFFSET(" & Sheets(2).Name & "!R2C1,COUNTA(" & Sheets(2).Name &
"!C1)-3,0,3)"
.Names.Add Name:="waouh", RefersToR1C1:= _
"=OFFSET(" & Sheets(3).Name & "!R2C1,COUNTA(" & Sheets(3).Name &
"!C1)-3,0,3)"
End With
End Sub
'---------------------------------------
MichD
---------------------------------------------------------------
je vois bien le principe du " & Sheets(3).Name & ...;
seulement il me met une erreur 1004
je craque
il me vien a l'idee aussi de de remplacer le numéro de la feuille par i e t faire une boucle genre
for i = 1 to nombre total de feuille dans le classeur
With ActiveWorkbook
.Names.Add Name:="dd" & i , RefersTo:= _
"=OFFSET(" & Sheets(i).Name & "!R2C1,COUNTA(" & Sheets(i).Name &
"!C1)-3,0,3)"
mais bon la je me crois chez les bisounours :))
'----------------------------------
Sub test()
Dim A As Integer, Nom As String
With ActiveWorkbook
For Each sh In .Worksheets
A = A + 1
Nom = "Magic" & A
.Names.Add Name:="" & Nom & "", RefersTo:= _
"=OFFSET(" & sh.Name & "!R2C1,COUNTA(" & ss & "!C1)-3,0,3)"
Next
End With
End Sub
'----------------------------------
MichD
---------------------------------------------------------------
tres interessant, il ne me reste plus qu'a tester en grandeur nature demain au bureau
cela marche sur un fichier test au chaud dans mon lit
sinon pour le & ss& dans COUNTA(" & ss & "!C1) il corespond au $ qui entou re le C ?
"=OFFSET(" & sh.Name & "!R2C1,COUNTA(" & sh.Name & "!C1)-3,0,3)"
MichD
---------------------------------------------------------------