copie de liste de validation

surgeon84fr

XLDnaute Junior
Bonjour au forum

je suis nouveau et plutôt novice dans VBA...

j'ai deux problèmes:

Voilà afin de mettre à jour un ficher excel estampillé "version ancienne" vers un autre identique mais estampillé V2 (car nouvelles macro,etc...) j'éxécute des copier/coller entre les feuilles "anciennes version" vers les feuilles "V2".

1)Comme toutes les feuilles ne sont pas concernées, j'aimerai faire une boucle du genre "for each in" où le in va chercher uniquement dans une liste de nom de feuilles définie et pas tout le classeur. Je ne sais pas du tout comment déclarer les variables ou autres.

2) Mon deuxième problème est plus agaçant car dans une des plages précédentes que je copie, il y a une liste déroulante. Forcément dans la nouvelle version du fichier V2, ces listes déroulantes y sont toujours. Le soucis, c'est qu'à chaque "coller", j'ai excel qui me demande si je veux écraser l'ancienne liste qui porte le même nom ou le renommer. Dans mon cas, je souhaite écraser avec le même nom mais je ne sais pas comment le spécifier dans la macro.

J'espère être assez clair

Merci d'avance pour votre aide.
 
Dernière édition:

surgeon84fr

XLDnaute Junior
Re : copie de liste de validation

Bonjour et je vois qu'il y a des lèves-tôts comme moi dont les macros défectueuses empechent de dormir.....:D

Je ne peux pas faire ce que vous dites tout simplement parce que les classeurs sont identiques, seules les données dans certaines feuilles m'intéressent de reproduire dans le classeur qui est certes "nouvelle version" mais uniquement en terme de macro et de calcul puisque tout le reste (le visuel : feuilles, noms des feuilles,etc....) est rigoureusement identique.
 
Dernière édition:

surgeon84fr

XLDnaute Junior
Re : copie de liste de validation

Je reviens après plein de recherches mais je bloque toujours.

Voici mon code:
Code:
Dim i As Worksheet
Dim mois1 As Worksheet
Dim mois2 As Worksheet

mois1 = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
mois2 = Array("j", "f", "m", "a", "m1", "j1", "j2", "a1", "s", "o", "n", "d")

For Each i In mois1
   Worksheets(i).Select
   Range("J4:M34").Select
   Selection.ClearContents
Next i

For Each i In mois2
    Sheets(i).Select
    Range("B29:E29").Select
    Selection.Copy
    Windows(*****).Activate
    Sheets(i).Select
    Range("B29:E29").Select
    ActiveSheet.Paste
 Next i

Mais ça ne marche pas. j'ai droit à une erreur.

J'espère qu'avec ce code, vous arriverez à mieux cerner ma demande.

J'ai toujours aussi le souci dans la deuxième boucle : la sélection copiée comprends des menu déroulant qui sont toujours dans le fichier destination (identique mais vierge, je rappelle) mais je dois pour les douze mois cliquer sur oui à la demande d'excel d'utiliser les mêmes définitions de nom dans les liste.

J'espère être aussi limpide que possible.

Merci d'avance
 

surgeon84fr

XLDnaute Junior
Re : copie de liste de validation

Rebonjour à tous,

en fait j'ai 12 onglets pour les 12 mois servant de saisie d'horaires (chez la nounou):eek:
et de nouveau 12 autres onglets correspondant à la facturation du mois en question.

C'est-à-dire que la feuille "j" correspond à la facturation du mois de janvier visible à la feuille "Janvier", etc.

Et je souhaiterais faire des copies de plages de mon ancien fichier vers le nouveau en utilisant "for each" et pour les 24 feuilles...en sachant que j'ai aussi une feuille "données", "menu",etc...auxquelles je ne touche pas ni dans l'ancien fichier, ni dans le nouveau.

J'espère avoir éclairci.

Merci
 

surgeon84fr

XLDnaute Junior
Re : copie de liste de validation

Hello,

je sais que je vais être désagréable mais je m'en excuses par avance.

J'ai cherché partout pour mon souci qui, étant donné mon bas niveau, ne doit être compliqué pour des chevronnés comme ceux dont j'ai pu lire les aides fournies dans d'aures post...chapeau bas pour vous messieurs dames.

Que manque-t'il dans mon message pour qu'il obtienne un poil plus d'attention, s'il vous plait?

Je suis encore désolé de mon impatience

Merci
 

Catrice

XLDnaute Barbatruc
Re : copie de liste de validation

Bonjour,

Il faudrait que tu fournisses ton contexte.
Mais voici ce que je comprends :
Code:
Sub Test()
mois1 = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
mois2 = Array("j", "f", "m", "a", "m1", "j1", "j2", "a1", "s", "o", "n", "d")
For Each i In mois1
   Worksheets(i).Range("J4:M34").ClearContents
Next i
For Each i In mois2
    Sheets(i).Range("B29:E29").Copy [COLOR="Blue"]Workbooks("AutreFichier.xls").[/COLOR]Sheets(i).Range("B29")
Next i
End Sub

Evite les Select.
 

surgeon84fr

XLDnaute Junior
Re : copie de liste de validation

Merci infiniement

c'est exactement ça et ça fonctionne super bien et même beaucoup plus rapidement que je ne l'aurais espéré.

Alors maintenant je ne sais pas comment faire pour mon deuxième souci.

La copie précedemment résolue n'a pas évité la réapparition d'une fenêtre à chaque liste de validation rencontrée.

En fait c'est normal car les deux fichiers (cible et départ) sont identiques. Cela signifie que les cellule départ et cible contiennent une liste déroulante avec forcément le même nom.

Jusque là c'est encore normal.

Je cherche juste le moyen par el biais d'une ligne dans VB de faire comprendre à excel que "oui" je souhaite utiliser le même nom de définition de liste.

Merci encore et veuillez encore m'excuser pour cette impatience de newbie.
 

Catrice

XLDnaute Barbatruc
Re : copie de liste de validation

Re,

Il y a une liste de validation au départ, il la faut dans le fichier d'arrivée ?
Pourquoi ne pas copier que les données (si c'est un archivage) ?

En faisant ceci, par exemple :
Code:
For Each i In mois2
    Workbooks("AutreFichier.xls").Sheets(i).Range("B29:E29").Value = Sheets(i).Range("B29:E29").Value
Next i
 
Dernière édition:

surgeon84fr

XLDnaute Junior
Re : copie de liste de validation

Bonjour

les fichiers source et cibles sont rigoureusement identiques en terme de feuilles, dispositions, liste de validations, noms de cellules,...seules changent les macro et certaines formules.

Donc souhaitant récupérer ce qui se trouve dans certaines cellules de certaines feuilles, je fais des copier/coller du fichier source vers le fichier cible.

Manuellement, je n'ai aucun messages (bizarre d'ailleurs)
Mais par macro et donc automatisation grâce à la boucle FOR EACH, EXCEL me demande si je veux conserver le nom de définition de liste ou pas...et je dois cliquer sur "oui" à chaque fois car c'est mon choix.

Merci pour votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 325
Messages
2 087 308
Membres
103 513
dernier inscrit
adel.01.01.80.19