Copier un champs nommée à colonnes non contigües

Pierre31

XLDnaute Junior
Bonjour à toutes et tous,

Voilà mon problème, j'ai un tableau de la forme


NOM PRENOM CODE N1 N2
toto A 1 VA ll
titi B 2 VB kdd
lulu C 3 VC drtfe
lolo D 4 VD kfkf
lili E 5 VE gdneke
riri F 6 VF sdjsios

A partir de là j'ai créer un champs nommé "TEST" par "Insertion-Nom" et qui prend seulement les 2 colonnes Nom et CODE.
Ensuite je sélectionne ce champs en le désignant de la façon suivante:

Application.Goto Reference:="TEST"

Ensuite je souhaite copier ce champs par macro pour le coller dans une autre feuille, et la réponse est "impossible d'exécuter cette commande sur des sélections multiples".
Quelle peut être la solution ?
D'avance merci pour vos réponses.
Cordialement
Pierre
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier un champs nommée à colonnes non contigües

Bonjour Pierre, bonjour le forum,

Comme tu ne précises pas tu veux copier je te propose juste le début d'une solution :
Code:
Sub Macro1()
Dim cel As Range
For Each cel In Range("TEST")
    cel.Copy 'destination:= ???
Next cel
End Sub
 

Pierre31

XLDnaute Junior
Bonjour Robert et le forum,

Tout d'abord merci Robert pour ta réponse que j'ai essayé de mettre en application dans la macro "Copie_2" et en essayant d'apporter une modification qui devrait permettre de recopier le champs nommé colonne par colonne. C'est là que le bat blesse. La variable "V"
qui doit revenir à 1 lorsque l'on change de colonne passe systématiquement à 0 (zéro).
2eme problème, à la recopie du champs nommé qui porte sur des colonnes non contigües, toute les colonnes sont copiées.

Cordialement
Pierre
 

Pièces jointes

  • Classeur1.zip
    23.4 KB · Affichages: 47
  • Classeur1.zip
    23.4 KB · Affichages: 48
  • Classeur1.zip
    23.4 KB · Affichages: 50

Pierre31

XLDnaute Junior
A nouveau bonjour,

Pour le 1er point plus de problème, voici la macro modifiée:


Sub Copie_2()
'
' Copie_2 Macro
' Macro enregistrée le 22/03/2011 par ADMIN
'
Dim cel As Range
Dim V, C As Integer

Nb_L = Sheets("Tables1").Range("A65536").End(xlUp).Row

V = 1
C = 12
For Each cel In Range("ee")

cel.Copy Cells(V, C)
V = V + 1

If V = Nb_L Then
V = 1 'reprise en ligne 1
C = C + 1 'Décalage de 1
GoTo Fin
Else
End If

Fin:

Next cel
'
End Sub

Donc je change bien de colonne mais hélas je copie toujours l'ensemble des colonnes alors que dans le cas présent je ne devrais copier que 2 colonnes.

Cordialement
Pierre
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Re: Copier un champs nommée à colonnes non contigües

Bonjour Pierre, bonjour le forum,

Ton problème vient de la définition de la plage nommée "ee" par formule. Comme je suis nul en formule je n'ai rien compris mais j'ai remarqué que selon la cellule active la plage nommée variait. Elle comprend les colonnes C et D plus la colonne de la cellule active... Tu devrais vérifier ça. En pièce jointe ton fichier avec la macro modifié j'ai créé une plage "Robert" et la macro fonctionne parfaitement.
 

Pièces jointes

  • Pierre _v01.xls
    68.5 KB · Affichages: 74

Pierre31

XLDnaute Junior
Bonjour Robert,
Effectivement lorsque l'on réalise la création d'un champs nommé manuellement par "Insertion - Nom - .." pas de problème pour la copie du champs. Je vais regarder de plus près l'insertion du champs par macro, c'est certainement là que se situe le problème.

Cordialement
Pierre
 

Pierre31

XLDnaute Junior
Bonjour à toutes et tous,

J'avance sur le sujet mais il me reste un problème à résoudre.
Lorsque je veux créer mon champs nommé à l'aide du Userform dans la zone "Fait référence à " il y a par exemple:

"Tables1!$A$2:$A$7" au lieu de
Tables1!$A$2:$A$7 sans les guillemets, ce qui ne permet pas de prendre en compte ce champs nommé.
Avez vous une solution pour éviter ce problème ?

Cordialement
Pierre
 

Pièces jointes

  • Pierre _v02 (1).xls
    67.5 KB · Affichages: 60

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier un champs nommée à colonnes non contigües

Bonsoir Pierre, bonsoir le forum.

Tu ne précises pas où ce trouve ton code et dans ton fichier il y a 4 modules et une UserForm... Pas très facile de s'y retrouver...
Pour definir/ajouter une plage nommée tu peux utiliser aussi cette syntaxe simple :
Code:
Sheets("Tables1").Range("$A$2:$A$7").Name = "Le_nom_que_tu_Veux"
 

Pierre31

XLDnaute Junior
Bonjour Robert, bonjour le Forum,

En fait j'ai retrouvé la formule que j'avais utilisée depuis assez longtemps mais oubliée c'est en VBA la fonction "Union" qui permet de sélectionner des colonnes ou zones non contigües et cela fonctionne parfaitement. Dans l'exemple si dessous je nomme "Pierre" les lignes 2 à 7 des colonnes A, C, E.

Union(Range(Cells(2, 1), Cells(7, 1)), Range(Cells(2, 3), Cells(7, 3)), Range(Cells(2, 5), Cells(7, 5))).Name = "Pierre"

En utilisant cette solution je peux à partir du UserForm donner un nom de champs aux colonnes que je sélectionne par les "Check"

Cordialement
Pierre
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier un champs nommée à colonnes non contigües

Bonsoir Pierre, bonsoir le forum,

Oui c'est ça. Désolé je n'avais pas compris ce problème car j'aurais pu te donner la réponse. Mais l'essentiel c'est que ton souci soit solutionné.
 

Statistiques des forums

Discussions
312 413
Messages
2 088 200
Membres
103 762
dernier inscrit
rouazali