lecture d'onglet à nom variable

  • Initiateur de la discussion Thomas
  • Date de début
T

Thomas

Guest
Je cherche à écrire une macro qui lise les noms des onglets qui sont définis dans les cellules C8 à G8 de la feuille D pour aller copier dans chacun de ces onglets un certain nombre de cellules que je viens coller dans une feuille D.
Merci de votre aide.

Thomas
 
O

omicron

Guest
Bonsoir Thomas,

OK pour le problème posé, mais il faudrait indiquer où sont localisées dans la feuille D, les cellules à copier et à quel emplacement elles doivent être copiées dans les feuilles dont les noms sont définies dans les cellules C8 à G8.

Dès que tu nous auras fourni ces informations, il sera possible de proposer une solution.

Cordialement.

Omicron.
 
T

Thomas

Guest
Les cellules B2 à B13 sont à copier dans les feuilles tata, toto et titi (mais ces noms changent suivant les utilisateurs) et à coller sur la feuille D à partir de la cellule A1 et les unes en dessous des autres.

Merci de ton aide

Thomas
 
O

omicron

Guest
Bonsoir Thomas,

Tu trouveras en pièce jointe ton exemple avec le code qui devrait convenir si l'on s'appuie strictement sur le problème tel qu'il est défini.

Je precise celà car j'ai quelques doutes quand j'analyse le contenu des feuilles de ton fichier Excel :

- Dans la page Titi je pense que tu as inséré une ligne par mégarde, les données à copier étant en ligne 3 au lieu de 2

- La récap a été faite dans la feuille D au lieu de la feuille E

Malgré tout, voici le code proposé avec les explications détaillées du rôle de chaque instruction:

=====================================================
Private Sub CommandButton1_Click()
'Positionnement plage destination = première cellule à remplir (Feuille D cellule A1)
Set rngdst = Sheets("D").Cells(1)
'Pour chaque nom de feuille précisé dans la zone C8:G8 de la feuille D
For Each Sht In ActiveSheet.Range("C8:G8").Cells
'Vérification de l'existence d'une feuille de ce nom
If Not Sheets(Sht.Value) Is Nothing Then
'Si elle existe : positionnement plage source = zone à copier
Set RngSrc = Sheets(Sht.Value).Range("B2:B13")
'Si elle existe : copie de la zone source dans la zone destination
RngSrc.Copy Destination:=rngdst
'Si elle existe : repositionnement de la nouvelle plage destination à la suite de la précédente
Set rngdst = rngdst.Offset(Range("B2:B13").Rows.Count, 0)
Else
'si elle n'existe pas : message d'alerte
MsgBox "Attention ! La feuille nommée " & Sht.Value & " n'existe pas"
End If
'Rebouclage sur le nom de feuille suivant
Next Sht
End Sub

=====================================================

En te souhaitant bon courage pour la suite.

Omicron.
 

Pièces jointes

  • CopieParametree.zip
    11.4 KB · Affichages: 23

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 691
Membres
103 641
dernier inscrit
anouarkecita2