Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Remplir une BDD à partir des feuilles Excel du meme classeur

!xmusaton

XLDnaute Nouveau
Bonjour,

J'ai besoin de votre aide précieuse svp!

Je souhaite remplir une base de donnée à partir de plusieurs feuilles du même classeur, qui ont toutes la même forme.
La première partie du tableau "BD" se remplit via un bouton VBA "actualiser BD"
Les valeurs à reprendre dans le tableau sont celles colorées en rose dans chaque feuille.
-Colonnes A et B du tableau "BD" reprennent les cellules B22 et B23 "non vides" de chaque feuille, en copiant ça sur 7 lignes.
-Colonne C ne rien faire
-Colonne D reprend les équipes de la colonne B8:B14 de chaque feuille (7 équipes), si la cellule B22 de la feuille est "non vide"
-Colonnes E F G H I J K reprennent les dates "non vides" de la ligne 3 de chaque feuille, correspondantes aux périodes X0 X1 X2 X3 X4 X5 X6, en copiant ça sur 7 lignes.
également uniquement si la cellule B22 de la feuille est "non vide".

Important:
-Toute modification du contenu des feuilles doit être prise en compte en actualisant la BD.
-Cela ne s'applique qu'aux feuilles dont les initiales sont: "AB", "AC" ou "AD". (nom de la feuille c'est le même que la cellule B22)

J'espère que c'est clair pour vous.
N'hésitez pas si vous avez besoin de plus d'explications.

Merci par avance.

Je vous joins le fichier.

PS: le calendrier à droite dans la feuille "BD" je vais le remplir avec des formules, sans passer par VBA.
 

Pièces jointes

  • essai cc.xlsm
    801.1 KB · Affichages: 10

!xmusaton

XLDnaute Nouveau
Bonjour Sousou,

Super merci beaucoup!! c'est exactement ce que je voulais.

Serait-il possible de mettre une condition que l'actualisation du tableau ne se fait que pour les feuilles commençant par : "AB0" , "AC0" ou "AD0"

If Left(f.Name, 1) = "A" Then n'est pas suffisante car y'a la possibilité d'avoir des feuille qui commencent par A...mais pas à reprendre dans le tableau.


Merci encore une fois pour ton aide.
 

sousou

XLDnaute Barbatruc
Bonsoir
J'ai créé une fonction condition() pour gérer tes feuilles.
Cette solution te permettra de la faire évoluer en fonction de tes données réelles (nom des feuilles)
 

Pièces jointes

  • essai cc-1.xlsm
    811.4 KB · Affichages: 15

!xmusaton

XLDnaute Nouveau
Salut sousou,

Je reviens vers toi par rapport à ce fichier, en fait, j'aimerais mettre une formule dans la colonne C là ou rien ne se copie.
Simplement, avec la macro la formule s'efface.

Comment faire ?

Merci par avance pour ton aide.
 

sousou

XLDnaute Barbatruc
bonjour.
L'appli reconstruit la base de données à partir des autres feuilles, donc on raz la bd au départ. il est donc normal que la colonne c Soit elle aussi raz
Peux-tu être plus précis sur ta demande.
1/La formule doit être mise après la mise à jour, et si cela est, quelle formule?
2/ Sinon la formule se trouve t'elle dans les feuilles permettant de la construire?
 

!xmusaton

XLDnaute Nouveau
Salut Sousou,
Merci pour ta réponse, non la formule ne se trouve pas dans les feuilles.
C'est bêtement la formule qui affiche les 3 premières lettres de gauche de chaque cellule de la première colonne (ID).
Y'a moyen de l'intégrer dans le programme vba
 

sousou

XLDnaute Barbatruc
Bonjour
Ajoute dans le code la ligne en gras.

Sub cop(f, s1, s2, d1, d2, lg)
With Sheets("BD").Rows(lg)
For n = 1 To nequipe
f.Range(s1).Copy .Cells(n, d1)
f.Range(s2).Copy .Cells(n, d2)
f.Range("b8").Offset(n - 1, 0).Copy .Cells(n, d2 + 2)
.Cells(n, d2 + 1) = Left(f.Range(s1), 3)
For x = 0 To 6
Set mx = f.Rows(1).Find("X" & x)
madate = mx.Offset(2, 0)
.Cells(n, d2 + 2 + x + 1) = madate
Next

Next
End With
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…