Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/09/2011, 22h07   #1
Futur Membre du Club
 
Gérard Gillieaux
Inscription : septembre 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Gérard Gillieaux
Localisation : Belgique

Informations forums :
Inscription : septembre 2010
Messages : 20
Points : 16
Points : 16
Par défaut Copie de plages nommées

Par défaut Copie de plage nommée
Bonsoir le forum, pourriez-vous me dire ce qui cloche dans ce code (un classeur de 3 feuilles et 4 plages nommées dans la feuille 1 [peu importe les valeurs des plages et leurs noms]).

Ce bout de code est censé copier la plage 1 dans la feuille 2 [J3], la plage 2 dans la feuille 3 [J3], la plage 3 dans la feuille 2 [B3] et la plage 4 dans la feuille 3 [B3].

Merci de votre aide.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Sub CopieZone()
 
  Dim nms, R
 
  Set nms = ActiveWorkbook.Names
 
  For R = 1 To nms.Count / 2
    ActiveWorkbook.Names(nms(R).Name).RefersToRange.Copy: Sheets(R+1).[J3]
  Next
 
  For R = (nms.Count / 2) + 1 To nms.Count
    ActiveWorkbook.Names(nms(R).Name).RefersToRange.Copy: Sheets(R+1).[B3]
  Next
 
End Sub
Désolé, j'ai placé une demande identique dans le forum Excel (me suis trompé…)
corinthien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 22h28   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Est que ce passe t'il ?

à première vue je me demande l'utilité des ":" dans ton code ...?

Edit: une question de plus ... : combien de classeurs sont concernés par ta macro un qui contient code et donnée , 2 : un pour le code l'autre pour les données ?....
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 23h19   #3
Futur Membre du Club
 
Gérard Gillieaux
Inscription : septembre 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Gérard Gillieaux
Localisation : Belgique

Informations forums :
Inscription : septembre 2010
Messages : 20
Points : 16
Points : 16
Merci bbil, il ne se passe rien du tout et il n'y a qu'un seul classeur contenant le tout. Le but étant de copier les plages nommées sur les autres feuilles.

Le classeur final contiendra ± 1600 feuilles et ± 3200 plages nommées, toutes les plages se trouvant sur la Feuil1.

Quand au : après Copy, je n'en sait rien…
corinthien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 23h23   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
(sans tester )... j'aurais plutôt écrit la copie ainsi :

Code :
ThisWorkbook.Range(nms(R).Name).Copy ThisWorkBook.Sheets(R+1).[J3]
Quand c'est possible il vaut mieux utiliser ThisWorkBook plutôt qu'Active...

le ":" est identique à un passage à la ligne suivante... et donc à supprimer la ..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 23h33   #5
Futur Membre du Club
 
Gérard Gillieaux
Inscription : septembre 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Gérard Gillieaux
Localisation : Belgique

Informations forums :
Inscription : septembre 2010
Messages : 20
Points : 16
Points : 16
Avec
Code :
1
2
 
ThisWorkbook.Range(nms(R).Name).Copy ThisWorkBook.Sheets(R+1).[J3]
j'ai le message suivant :

Erreur de compilation:
Membre de méthode ou de données introuvable

Par contre,
Code :
1
2
 
ActiveWorkbook.Names(nms(R).Name).RefersToRange.Copy Sheets(R + 1).[J3]
fonctionne parfaitement, c'était juste le ":" qui gênait.

Merci de m'avoir mis sur la voie
corinthien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 11h12   #6
Membre éclairé
 
Inscription : février 2006
Messages : 287
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 287
Points : 348
Points : 348
Citation:
Envoyé par corinthien Voir le message
Le classeur final contiendra ± 1600 feuilles et ± 3200 plages nommées.
1600 feuilles ! Je ne pensais pas que c'était possible.
En tout cas bon courage pour gérer tout ça .
neupont est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h20.


 
 
 
 
Partenaires

Hébergement Web