XL 2010 Aide VBA

barry64

XLDnaute Nouveau
Bonjour je commence sur les VBA sur Excel, j'ai de petite base donc excusez moi si le code vous font mal au yeux. :)

Serait-il possible de m'aider?

Ma problématique est que je veux copier les cellules d'une colonne ou l'en-tête est une date, par apport à ma date de référence sur ma première feuille.
 

Pièces jointes

  • Barry.xlsm
    39.5 KB · Affichages: 25
Solution
Evidemment cela fait reprendre pas mal de chose dans l'outil :
1- Dans la feuille présence, deux listes déroulantes pour la base à utiliser et la date concernée.
2- Dans l'onglet config, tout est automatisé. Les instructions sont en commentaires.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Barry,
Avec ce que j'ai compris, en PJ avec cette macro dans la feuille Présence - 18. Elle s'active sur sélection de la feuille ou en changeant la date :
VB:
Sub Worksheet_Activate()
    MAJ
End Sub
Sub MAJ()
Application.ScreenUpdating = False
IndexW = 5
Sheets("Présence - 18").Range("D5:G34").ClearContents
If Not IsError(Application.Match(Sheets("Présence - 18").[F1], Sheets("Base de données - 18").[1:1], 0)) Then
    IndexR = Application.Match(Sheets("Présence - 18").[F1], Sheets("Base de données - 18").[1:1], 0)
    Set Ws = Sheets("Base de données - 18")
        For Ligne = 2 To Ws.Range("C65500").End(xlUp).Row
            With Sheets("Présence - 18")
                If Ws.Cells(Ligne, IndexR) = "A l'heure" Or _
                    Ws.Cells(Ligne, IndexR) = "Retard" Then
                    .Cells(IndexW, 4) = Ws.Cells(Ligne, 13)
                    .Cells(IndexW, 5) = Ws.Cells(Ligne, 2)
                    .Cells(IndexW, 6) = Ws.Cells(Ligne, 3)
                    .Cells(IndexW, 7) = Ws.Cells(Ligne, 16)
                    IndexW = IndexW + 1
                End If
            End With
        Next Ligne
End If
End Sub
Je ne remonte que les Présent et Retard.
 

Pièces jointes

  • Barry2.xlsm
    37.5 KB · Affichages: 5

barry64

XLDnaute Nouveau
Bonjour Sylvanu, merci de prendre du temps pour moi,

Ce que tu as créer à l'air intéressant, cela prendra t'il en compte à chaque fois que je rajoute une date après chaque entrainement?

Est ce normal que cela me change les données dans ma base de données - 18? je perds l'email du parent n°1
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
1- En fait la BD a été polluée durant la mise au point. J'ai remis carré dans la PJ. Sorry, je ne m'en étais pas rendu compte.
2- Oui bien évidemment. C'est le rôle de :
VB:
IndexR = Application.Match(Sheets("Présence - 18").[F1], Sheets("Base de données - 18").[1:1], 0)
IndexR est l'index de lecture. Il recherche dans la ligne 1 où se trouve la date concernée. Si la date n'est pas trouvée, il se contente de vider la matrice de sortie.
 

Pièces jointes

  • Barry3.xlsm
    38.1 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bah, elle est vide.
Par contre j'utilise les N° de colonnes pour copier les valeurs. Donc si vous la supprimez il faut reprendre les index :
VB:
                    .Cells(IndexW, 4) = Ws.Cells(Ligne, 13)
                    .Cells(IndexW, 5) = Ws.Cells(Ligne, 2)
                    .Cells(IndexW, 6) = Ws.Cells(Ligne, 3)
                    .Cells(IndexW, 7) = Ws.Cells(Ligne, 16)
en mettant (N-1) soit 12,1,2,15.

ou si vous êtes courageux vous faites un match sur chaque entête pour trouver la bonne colonne. Cela devient alors totalement transparent. :)
 

MousLy

XLDnaute Nouveau
Bonjour tout le monde je suis debutant en vba et j'aimerai que vous m'aidiez a integrer un code dans mon programme qui me permetterait de masquer les colonnes qui n'ont pas de contenu a partir du colonnne H à L. j'ai beau essai mais jy arrive pas
Merci d'avance et je compte sur vous.
 

barry64

XLDnaute Nouveau
Sylvanou?

Si tout fonctionne bien, mais j'aimerais faire en sorte car mon réel document comprend 4 feuilles de présence, d'en faire une seule suite à un liste déroulante pour choisir ma catégorie et du coup modifier les dates de ma liste déroulante c'est faisable?
 

barry64

XLDnaute Nouveau
J'aurais souhait de faire disparaître la feuille "Présence - 18" et que ma liste déroulante se change par rapport au date dans les configs.

J'espère être assez clair :)
 

Pièces jointes

  • Effectifs -15; -18; Séniors; GB (Enregistré automatiquement).xlsm
    50.8 KB · Affichages: 2

Discussions similaires

Réponses
5
Affichages
293

Statistiques des forums

Discussions
311 730
Messages
2 081 978
Membres
101 854
dernier inscrit
micmag26