Coller des plages nommées avec liaison.

patapock

XLDnaute Nouveau
Bonjour a tous.
J'ai réalisé un classeur qui comprends plusieurs feuilles:"Français";"Anglais";"Italiens", "Espagnols".

Chaques feuilles comprend les mêmes colonnes: Nom, Prénom, Date de Naissance, Licence.

Les lignes de ces différents tableaux s'alimentent grâce à un Userform qui ventile les nouvelles entrées en fonction de la nationalité renseignée.

J'ai créé une "plage nommée" pour chaque tableau de chacune de ces feuilles:
"Data_Français";"Data_Anglais";"Data_Italiens", "Data_Espagnols"

Je souhaiterai maintenant remplir une nouvelle feuille "Data" qui accueillerai l'une en dessous de l'autre, les données des différentes feuilles précédentes en appelant les plages nommées.

J'y arrive avec le code suivant:

Private Sub Worksheet_Activate()

Range("Data_Français").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)
Range("Data_Anglais").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)
Range("Data_Italiens").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)
Range("Data_Espagnols").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)

End Sub

Seulement, avec ce code, chaque fois que je bascule sur une autre feuille de mon classeur, et que je reviens sur la feuille "Data", cette dernière ajoute à chaque reprise une nouvelle fois chaque plage nommée !

Ma formule n'est donc pas la bonne.

Par ailleurs, je souhaiterai que, si par la suite, je modifie une cellule de ma feuille " Data", ces modifications se répercutent dans les autres feuilles concernées.

J'ai essayé avec un copier coller ou un tableau croisé dynamique, mais je ne connais pas les formulations VBA pour collage spécial avec liaisons.

Si quelqu'un avait une idée qui me permettrai d'avancer.

Merci
 

pierrejean

XLDnaute Barbatruc
Re : Coller des plages nommées avec liaison.

Bonjour patapok

A tester:

VB:
Private Sub Worksheet_Activate()
ActiveSheet.Cells.clear
Range("Data_Français").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)
Range("Data_Anglais").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)
Range("Data_Italiens").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)
Range("Data_Espagnols").Copy Sheets("Data").Range("A" & Range("A65536").End(xlUp).Row)

End Sub
 

patapock

XLDnaute Nouveau
Re : Coller des plages nommées avec liaison.

pierrejean, merci de te pencher sur mon "cas".

J'ai essayé ton code, et je constate un nouveau problème non remarqué jusqu'à présent:
Ton code fonctionne parfaitement si je le met dans mon Userform de saisie.

Par contre, si je le mets dans le code de ma feuille "Data", dans le Sub
Code:
Private Sub Worksheet_Activate()
Il provoque une "Erreur d'exécution '1004':
"Erreur définie par l'application ou par l'objet"

Ce n'est pas le cas si je met par exemple:
Code:
MsgBox "test Coucou!"

:confused:

L'autre interrogation, est la suivante:
Si je comprends bien, ta fonction
Code:
ActiveSheet.Cells.clear
efface les données précédentes de la feuille "Data"

Or, e souhaiterai que les données insérées par le code VBA dans la feuille "Data" (mes plages nommées), s'actualisent automatiquement dans mes plages nommées issues des autres feuilles, si je dois modifier à la main certaines cellules.

L'équivalent d'un collage spécial, avec liaison

Qu'en penses-tu?
 

pierrejean

XLDnaute Barbatruc
Re : Coller des plages nommées avec liaison.

Re

A tester
VB:
Private Sub Worksheet_Activate()
ActiveSheet.Cells.Clear
Range("Data_Français").Copy Sheets("Data").Range("A" & Sheets("Data").Range("A65536").End(xlUp).Row)
Range("Data_Anglais").Copy Sheets("Data").Range("A" & Sheets("Data").Range("A65536").End(xlUp).Row)
Range("Data_Italiens").Copy Sheets("Data").Range("A" & Sheets("Data").Range("A65536").End(xlUp).Row)
Range("Data_Espagnols").Copy Sheets("Data").Range("A" & Sheets("Data").Range("A65536").End(xlUp).Row)
End Sub

Effectivement lorsque la feuille Data sera activée la totalité des infos sera actualisée
Si des titres ou autre infos doivent subsister il faut revoir l'effacement qui est ici integral
 
Dernière édition:

patapock

XLDnaute Nouveau
Re : Coller des plages nommées avec liaison.

pierrejean,
je viens d'essayer ton nouveau code.
J'ai la même erreur que précédemment...:confused:

Je vois pas ou ça coince car ce code aussi fonctionne si je le place dans le sub qui ferme mon formulaire de saisie et enregistre les nouvelles données, soit entre les balises
Code:
Private Sub CommandButton_VALIDATE_Click()
et
Code:
End Sub

Etrange non?

Pour ce qui est de l'effacement des données, lors de l'appel de la feuille "Data", je sais pas si , une fois le problème précédent résolu, ça va "coller", car par la suite, j'aurai souhaité pouvoir modifier certaines cellules de la feuille "Data" et que ces modifications se répercutent dans les autres plages nommées.

Je souhaiterai aussi pouvoir, dans la feuille "Data", masquer certaines lignes, ou encore colorier des cellules avec une mise en forme conditionnelle.

Si le tableau est effacé et recréé à chaque appel de "Data", ne perdrais-je pas la mise en forme?

En fait, sans faire appel à VBA, ce dont j'ai besoin, n'est ni plus ni moins qu'un copier/collage Spécial avec liaison des données.

Seulement, je ne sais pas le faire en VBA, avec des plages nommées qui sont amenées à varier.

Je sèche depuis 15j malgré de multiples recherches.
Pour l'instant, mon projet est à l'arrêt, mais j'apprends doucement les bases du VBA.
C'est toujours ça de pris.

Merci pour ta patience.
 

Discussions similaires

Réponses
6
Affichages
142

Statistiques des forums

Discussions
312 304
Messages
2 087 059
Membres
103 444
dernier inscrit
Aeggie78