Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fichier

jfmontagner

XLDnaute Nouveau
Bonjour et merci d'avance à ceux qui me viendront en aide!

Je dois automatisé une copie de données contenues dans des onglets (le nombre pouvant varier : PROJET 1, PROJET 2, etc...) pour les recopier sur le premier onglet (nommé CR).

Sur le fichier en pièce jointe les données à recopier sont appelées Texte 1, Texte 2, Texte 3, etc. et pour une meilleures compréhension j'ai colorié les cellules en violet clair.
Sur l'onglet CR, la mise en forme sera toujours la même. Je ne sais absolument pas comment faire ni par où commencer. Mes principaux soucis sont de dupliquer la mise en forme du premier pavé relatif au Projet 1 pour le projet 2 et ainsi de suite. Je ne sais pas non plus créer les boucles pour tous les onglets. Je pensais créer un bouton lié à une macro sur l'onglet CR pour lancer la duplication...

Je ne sais pas si je suis assez clair, j’espère que oui... Si ce n'est pas le cas, je suis à votre disposition n'hésitez pas.

D'avance merci pour votre aide et bonne fin de journée à tous!

Jeff
 

Pièces jointes

  • (Essai) MODELE NPR.xlsm
    74.5 KB · Affichages: 61
  • (Essai) MODELE NPR.xlsm
    74.5 KB · Affichages: 61
  • (Essai) MODELE NPR.xlsm
    74.5 KB · Affichages: 62
C

Compte Supprimé 979

Guest
Re : Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fi

Salut jfmontagner,

Voici un code, qui je l'espère sera assez explicite pour que tu le comprennes
VB:
Sub CopieProjet()
  Dim ShtD As Worksheet ' Feuille de destination
  Dim ShtS As Worksheet ' Feuille source
  Dim DLig As Long, NewLig As Long
  ' Définir la feuille de destination
  Set ShtD = Sheets("CR")
  ' Pour chaque feuille
  For Each ShtS In ThisWorkbook.Sheets
    ' Si le nom est différend de "CR"
    If ShtS.Name <> "CR" Then
      ' On récupère la dernière ligne de la feuille CR
      DLig = ShtD.Range("B" & Rows.Count).End(xlUp).Row
      ' On ajoute une ligne vide
      NewLig = DLig + 2
      ' On copie / colle les zones que l'on souhaite
      ShtS.Range("G2:S3").Copy Destination:=ShtD.Cells(NewLig, 2)
      ShtS.Range("T36:V40").Copy Destination:=ShtD.Cells(NewLig, 17)
      NewLig = NewLig + 3
      ShtS.Range("B15:N24").Copy Destination:=ShtD.Cells(NewLig, 2)
      ' Etc ....
    End If
  Next ShtS
End Sub

A+
 

jfmontagner

XLDnaute Nouveau
Re : Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fi

Bonjour et merci pour votre aide.

Je viens de modifier le code pour mes besoins, ajouter des mises en formes, etc.
Par contre il me reste encore deux problèmes à résoudre :
- La macro ne s'arrête pas : au dernier onglet elle revient au premier et ainsi de suite,
- Elle boucle sur les onglets masqués et il ne faut pas car ils n'ont rien à voir avec les PROJET (base, liste, etc..)

Je poste en pièce jointe mon fichier modifié.

Merci d'avance pour l'aide précieuse que l'on m'apportera.
Bonne fin de matinée à tous.

Cordialement,

Jeff
 

Pièces jointes

  • (Essai) MODELE NPR.xlsm
    186.1 KB · Affichages: 77
  • (Essai) MODELE NPR.xlsm
    186.1 KB · Affichages: 83
  • (Essai) MODELE NPR.xlsm
    186.1 KB · Affichages: 83
C

Compte Supprimé 979

Guest
Re : Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fi

Salut jfmontagner

La macro ne s'arrête pas : au dernier onglet elle revient au premier et ainsi de suite
Absolument pas, cela fonctionne parfaitement !

Elle boucle sur les onglets masqués et il ne faut pas car ils n'ont rien à voir avec les PROJET (base, liste, etc..)
Il faut tester que le nom n'appartienne pas à une liste
Code:
If InStr(1, "CR BASE LISTE", ShtS.Name) = 0 Then

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fi

Bonjour le fil, bonjour le forum,

Ta macro devrait se trouver dans un module plutôt que dans un composant WorkSheet (Feuil1(CR)). Mais cela n'est pas la cause de la boucle sans fin, elle devrait fonctionner normalement malgré tout. Chez moi elle s'arrête dans les deux cas après avoir traité le dernier onglet...
Mais si tu veux exclure les onglets masqués il faudrait rajouter :
Code:
    If ShtS.Name <> "CR" And ShtS.Visible = xlSheetVisible Then

[Édition]
Bonjour Bruno on s'est croisé
 

jfmontagner

XLDnaute Nouveau
Re : Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fi

C'est vrai tu as tout à fait raison, la macro s’arrête bien à la fin... C'est bizarre en mode pas à pas elle bouclait sans cesse, mais j'ai peut-être rêvé!

En ce qui concerne If InStr(1, "CR BASE LISTE", ShtS.Name) = 0 Then peux-tu m'expliquer quelle est la bonne syntaxe? J'ai un onglet masqué qui s’appelle "Projet 3" et j'ai donc saisi If InStr(1, "CR Projet 3", ShtS.Name) = 0 Then mais cela ne fonctionne pas, la macro va chercher les infos quand même...

Merci encore du coup de pouce c'est vraiment très sympa!

Bon app' :)
 

jfmontagner

XLDnaute Nouveau
Re : Recopier sur le 1er onglet certaine donnée contenue sur tous les onglets d'un fi

Bonjour et merci pour vos réponses,

J'ai un dernier problème je pense avec ce code qui récupère la dernière ligne non vide :
DLig = ShtD.Range("B" & Rows.Count).End(xlUp).Row

En effet dans le cas en pièce jointe la derniére ligne non vide est la ligne 13 mais la copie doit recommencer à partir de la ligne 17 : en gros, je dois toujours me décaler de 15 lignes à la fin de la boucle... Enfin je pense.

Je joins le fichier pour faciliter la compréhension.

Et merci d'avance pour votre aide précieuse!

Bonne fin de soirée à vous,

Jeff
 

Pièces jointes

  • (Essai) MODELE NPR.xlsm
    188 KB · Affichages: 45
  • (Essai) MODELE NPR.xlsm
    188 KB · Affichages: 45
  • (Essai) MODELE NPR.xlsm
    188 KB · Affichages: 45

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu