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

  • Initiateur de la discussion Initiateur de la discussion Pierre31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Pierre31

Guest
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
 
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
 
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

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
 
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

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
 
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

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"
 
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
 
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é.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour