Macro pour créer un BD depuis un planning...

Christian0258

XLDnaute Accro
Bonsoir à tout le forum,
Je souhaiterais votre aide pour écrire une macro. Cette macro devra créer, depuis la feuille "Planning", une base de données dans la feuille "Congés"....voir fichier

Je vous remercie, par avance, pour l'aide que vous voudrez bien vouloir m'accorder.

Bien amicalement,
Christian
 

Pièces jointes

  • Créer un BD depuis un planning.xlsm
    28.3 KB · Affichages: 64

Lone-wolf

XLDnaute Barbatruc
Bonjour Christian

Mis à part quelques erreurs dans les deux feuilles (Regarde ta demande et où sont placés les x + le résultat dans la feuille congé).
Ce ne serait pas mieux de créer une feuille pour chaque mois? Parce-que 368 colonnes c'est énorme. :eek:

VB:
Sub NomFeuilMois()
For I = 1 To 12
ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(30 * I, "mmmm")
Next I
End Sub
 
Dernière édition:

Christian0258

XLDnaute Accro
Re, le forum, Lone-wolf
J'ai trouvé cette macro (de J.Boisgontier) mais je n'arrive pas à l'adapter à la position de mon tableau qui démarre en F32.
Par ailleurs les zéros de mon Planning me pose problème...

Sub CreeBD()
Application.ScreenUpdating = False
Set s = Sheets("Congés")
s.[A2:E1000].ClearContents
Set p = Sheets("Planning")
nbCol = 380
For ligne = 33 To 47
i = 2
Do While i <= nbCol
témoin = False
Do While p.Cells(ligne, i) = "" And i <= nbCol
If i = nbCol Then témoin = True
i = i + 1
Loop
If Not témoin Then
typeCongés = p.Cells(ligne, i)
début = p.Cells(2, i)
Do While p.Cells(ligne, i) = typeCongés And i <= nbCol
If i = nbCol Then témoin = True
i = i + 1
Loop
fin = p.Cells(2, i - 1)
ligneBD = s.[A65000].End(xlUp).Row + 1
s.Cells(ligneCongés, 1) = p.Cells(ligne, 1)
s.Cells(ligneCongés, 2) = début
s.Cells(ligneCongés, 3) = fin
s.Cells(ligneCongés, 4) = typeCongés
s.Cells(ligneCongés, 5) = fin - début + 1
End If
Loop
Next ligne
End Sub

Merci pour votre aide.
Cordialement.
Christian
 

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof