Incrémentation d'un tableau par rapport aux onglets

Bonjour à toutes et à tous ,

J'aurais besoin de votre aide sur un fichier, pour la recherche d'informations dans différents onglets d'un même classeur.

J'ai un classeur avec plusieurs onglet.

J'ai créer une feuille récapitulative de mes onglets. j'aimerais que dans cette feuille récap s'incrémente automatique après la création d'un nouvel onglet.

J'ai écrit deux codes( le premier concernant ma feuille récap, à l'aide d'un bouton il se met à jour automatiquement), le deuxième pour qu'il aille chercher les informations nécessaires , les informations à rechercher sont toujours dans les même cellule.

Mon problème vient essentiellement du deuxième code, car je dois le réécrire à chaque création d'un nouvel onglet.

Y'a t-il moyen d'éviter d'écrire le code à chaque création d'un onglet.

En pièce jointe un exemple

Cordialement

Bonjour David-7, le forum,

Un essai....

La macro s’exécute à l'activation de la feuille récap.

Cordialement,

Bonjour xorsankukai,

Un grand merci à toi c'est exactement cela que je voulais.

j'aurais une question, si dans un futur je voudrais faire la même chose entre deux classeurs Excel, placer dans le même dossier est-ce que se serait beaucoup plus compliqué en se baser sur ta macro ?

Re,

Merci pour le retour,

si dans un futur je voudrais faire la même chose entre deux classeurs Excel, placés dans le même dossier est-ce que se serait beaucoup plus compliqué en se basant sur ta macro ?

A priori non, faut voir le contexte.....

Cordialement,

Bonjour xorsankukai,

mon futur était vraiment proche
Je souhaiterait faire la même chose entre deux classeurs
Classeur "A" copier les valeurs à partir des cellules A8 a À 105 en prenant compte d'une valeur en N8 la valeur "GAGNE"
Puis coller ces valeurs dans le classeur "B" à partir de la cellule A4

les classeurs seront toujours dans le même dossier.

Je ne mets pas de fichier volontairement, j'aimerais la travailler un peu de mon coter pour savoir si je peux m'en sortir .

Cordialement

Bonjour David-7, le forum,

Je ne mets pas de fichier volontairement, j'aimerais la travailler un peu de mon coter pour savoir si je peux m'en sortir .

En supposant :

  • que le classeur de destination se nomme Classeur B
  • Que le feuille se nomme B
  • Que les données doivent être écrites dans un tableau structuré
  • que le bouton associé à la macro se situe dans le classeur source

Un truc du genre:

Sub transfert()
 Dim newtb(), i%, k%, ws As Worksheet, rcell As Range
 Dim wb As Workbook, ouvert As Boolean

 Application.ScreenUpdating = False

  ReDim newtb(1 To Sheets.Count, 1 To 5)
   For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "DEVIS*" Then
      newtb(k + 1, 1) = ws.Name
      newtb(k + 1, 2) = ws.Range("D3")
      newtb(k + 1, 3) = ws.Range("D2")
      newtb(k + 1, 4) = ws.Range("J5")
      newtb(k + 1, 5) = ws.Range("J6")
     k = k + 1
    End If
   Next ws

   For Each wb In Workbooks
    ouvert = False
    If wb.Name = "Classeur B.xlsx" Then ouvert = True 'nom du classeur de destination à adapter
   Next

 If ouvert = False Then Workbooks.Open ("C:\Users\maison\Desktop\Nouveau dossier\Classeur B.xlsx")
  'teste si le classeur de destination est ouvert et l'ouvre dans la cas contraire
  'chemin et nom à adapter

   'On Error Resume Next
     With Workbooks("Classeur B.xlsx").Sheets("B").ListObjects(1)
     'en supposant que ta feuille de destination se nomme B
     'et que les données sont sous forme de tableau structuré
      If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
      'efface les données si existantes
      If .InsertRowRange Is Nothing Then
       Set rcell = .HeaderRowRange.Cells(1).Offset(.ListRows.Count)
      Else
       Set rcell = .InsertRowRange.Cells(1)
      End If
     'définit la première ligne du tableau structuré
     End With

     With rcell
      If k > 0 Then rcell.Resize(k, 5).Value = newtb
      Erase newtb: Set rcell = Nothing
     End With
    Workbooks("Classeur B.xlsx").Save: Workbooks("Classeur B.xlsx").Close 'sauvegarde et ferme
   MsgBox "Transfert effectué", vbInformation
End Sub
  • On vérifie au préalable si le classeur de destination est ouvert, dans le cas contraire on l'ouvre.
  • On vide les données déjà existantes
  • On écrit dans le tableau
  • On ferme le classeur en sauvegardant
  • Un message confirme le transfert

Cordialement,

Bonjour xorsankukai,

J'ai essayé de modifier ce que tu m'as donné comme code mais c'est beaucoup difficile que je pensais.

Je pense que ma demande est plus simple que le code que tu ma envoyer

En pièce jointe les deux classeurs
Le fichier1 étant mon fichier source (Feuille 1)
le fichier 2 étant mon fichier de destination (Feuille 1)

Fichier 1 copie les cellules A, B, D et H à partir de la ligne 4 si la colonne Ie = Présent

les coller ensuite dans le fichier 2 à partir de la ligne 5 est à la suite (c’est-à-dire incrémenter les lignes vides)

Cordialement
8fichier1.zip (23.72 Ko)

Bonjour David-7, le forum,

Si les 2 classeurs sont dans le même répertoire:

J'ai mis tes données sous forme de tableaux structurés.

21david.zip (41.21 Ko)

Cordialement,

Bonjour xorsankukai ,

J'ai pris un peu de temps à te répondre .
Un grand merci d'avoir pris un peu de ton temps pour me répondre et trouver mes solutions car cela fonctionne parfaitement.

J'ai encore du chemin pour arriver à ce niveau.

Bonne journée et bonne fête de fin d'année

Cordialement

Bonjour David,

Merci pour le retour,

Si ton problème est résolu, pense à clôturer le fil,

Bonne continuation,

Comment je fait pour clôturer ?

Bonsoir,

Pour clôturer le fil, cliquer sur le bouton V vert du post à coté du bouton EDITER.

image

Bonne soirée,

Rechercher des sujets similaires à "incrementation tableau rapport onglets"