Copier une cellule de plusieurs onglets sur un onglet récap

Bonjour,

Je débute sur Excel en vba et je pense que ce que je souhaite faire nécessite du VBA; je vous demande donc de l'aide !!

La demande est la suivante :

j'ai un fichier Excel avec une feuille visible (comme un sommaire) intitulée "Type de Test" à partir duquel je clique sur des boutons pour ouvrir un certain nombre de feuilles (ces feuilles s'ouvrent avec une macro qui créé une copie de feuilles cachées dans le classeur en fonction du bouton).

On a donc la feuille Type de test puis une ou plusieurs feuilles en suivant (qu'on appellera F1, F2, F3 etc...). Le nom des F1,...,F3 n'est pas défini, l'utilisateur peut le modifier.

Ce que je souhaite : en case B48 de la feuille Type de Test, que Excel me fasse un copier/coller du contenu des cases D2 renseigné dans les F1, F2, F3 etc... Ce contenu est différent à chaque feuille et je souhaite avoir une sorte de synthèse avec tous les intitulés à la suite, ou les uns en dessous des autres.

Ce que je n'arrive pas à faire c'est que le copier/coller prenne automatiquement les infos dans les feuilles F1,F2,... peu importe le nombre de feuilles et peu importe leur intitulé...

J'espère que c'est assez clair, sinon n'hésitez pas !!

Merci !

Salut thomas,

Pourrais-tu montrer le sub que tu as écrit ?

Je l'ai prise sur un autre site en mettant mes infos :

Sub RappelD2()
Dim Lig As Long, Col As Integer
Dim Wk As Worksheet
    Lig = 48 'Première ligne où copier
    Col = 2 'Colonne où copier
    For Each Wk In Worksheets
        If Wk.Name <> "Type de test" Then
            Sheets("Type de Test").Cells(Lig, Col) = Wk.Range("D2")
            Lig = Lig + 1
        End If
    Next Wk
End Sub

Re-bonjour,

j'ai fini par trouver une solution qui me satisfait presque totalement avec le code suivant :

Sub RappelD2()
Dim Lig As Long, Col As Integer
Dim Wk As Worksheet
Lig = 45 'Première ligne où copier
Col = 2 'Colonne où copier
For Each Wk In Worksheets
If Wk.Name <> "Type de test" And Wk.Visible = xlSheetVisible Then
Sheets("Type de Test").Cells(Lig, Col) = Wk.Range("D2")
Lig = Lig + 1
End If
Next Wk
End Sub

le seul soucis qu'il me reste est que, si on lance la macro avec par exemple 5 feuilles ouvertes F1 à F5, j'ai bien 5 lignes qui apparaissent avec le contenu de D2 sur chacune de ces feuilles.

MAIS, si ensuite, on supprime 2 feuilles (on se retrouve avec uniquement F1, F2, F3), et qu'on relance la macro, les lignes qui sont apparues pour F4 et F5 sont toujours la, elles ne se suppriment pas à chaque relance de la macro.

Savez-vous comment régler ce problème ? que à chaque fois, la macro réinitialise tous les résultats pour n'avoir que ceux des feuilles visibles au moment de la macro...

Merci !!

Bonsoir tout le monde,

A tester:

Sheets("Type de Test").Range("B45:B" & Sheets("Type de Test").Range("B" & Rows.Count).End(xlUp).Row).ClearContents

A placer en début de macro...

Sub RappelD2()
 Dim Lig As Long, Col As Integer
 Dim Wk As Worksheet
  Lig = 45 'Première ligne où copier
  Col = 2 'Colonne où copier
  'efface les données de B45 à B et dernière ligne
   Sheets("Type de Test").Range("B45:B" & Sheets("Type de Test").Range("B" & Rows.Count).End(xlUp).Row).ClearContents
    For Each Wk In Worksheets
     If Wk.Name <> "Type de test" And Wk.Visible = xlSheetVisible Then
      Sheets("Type de Test").Cells(Lig, Col) = Wk.Range("D2")
      Lig = Lig + 1
     End If
    Next Wk
End Sub

Cordialement,

salut,

ah yes !! le ClearContents ;)

ca semble fonctionner sur le fichier !!

Merci!

Rechercher des sujets similaires à "copier onglets onglet recap"