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

report de données

  • Initiateur de la discussion Initiateur de la discussion ifi77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ifi77

XLDnaute Occasionnel
Bonjour,

voici quelques jours que j'essaye de créer un report de données entre feuille et cela en fonction d'un nom choisi.

Dans l 'exemple vous avez une feuille statistique, avec un menu déroulant pour choisir un prénom. dans le meme classeur il y a des feuilles correspondants aux prénom.

Ce que j'essaye de faire, c'est de reporter les données "feuille statistique" en fonction du prénom choisi dans la feuille dénommer avec le prénom et cela lorsque je clique sur le bouton enregistrer.

cf fichier joint

Merci de votre aide.
 

Pièces jointes

Re : report de données

Bonjour fredoo merci cela fonctionne à merveille,

afin que je puisse le développer sur l'ensemble de mon programme pourrais tu m'expliquer à quoi servent les commandes car j'essaye de l'adapter pour qu'il recupère les données plus bas que d15 et qu'il prenne une autre cellule que k15 pour la statistique.

merci
 
Re : report de données

Bonsoir ifi,

Voici les explications dans le texte commenté de la macro :
VB:
Sub enregistreroct01()
        Sub enregistreroct01()

'==> Déclaration des variables utilisées dans les boucles.
Dim i, j, Rep

' Boucle de programme servant à balayer les 8 lignes du tableau d'apprenant, de 0 à 7 soit 8 lignes.
   For i = 0 To 7

' Si la cellule "D8 + i" donc D8 puis D9 puis D10...puis D15 n'est pas vide (Elle contient le nom d'un apprenant)
' Pour cela, on se décale de i lignes par rapport à D8.
       If Not IsEmpty(Range("D" & 8 + i)) Then
            
' On sélectionne la dernière cellule vide de la colonne G, dans la feuille qui porte le nom de l'apprenant
' auquel i fait référence. Pour cela, on se positionne en F10000 dans la feuille de l'apprenant puis on remonte
' à la dernière cellule occupé (idem <CTRL> + <HAUT>) puis on se décale d'une cellule vers le bas et une vers la droite.
' Dans la cellule ainsi identifiée, on place la valeur de K15 du tableau récapitulatif, c'est à dire le pourcentage.
            Sheets(Range("D" & 8 + i).Value).[F10000].End(xlUp).Offset(1, 1) = Range("K15")
            
' Boucle de programme servant à balayer les 8 lignes du tableau de modules suivis, de 0 à 7 soit 8 lignes.
            For j = 0 To 7
            
' En fonction des cases à coher, on vient renseigner la fiche de l'apprenant. Si la case est cochée, alors
' il y a la valeur VRAI dans la colonne L du tableau récapitulatif. Donc si la valeur de la ligne 8 + j
' dans la colonne L est vraie alors on renseigne le module suivi.

' on pourrait utiliser la notation suivante : "If Range("L" & 8 + j) = True Then _"
                If Range("L" & 8 + j) Then _
                
' On sélectionne la dernière cellule vide de la colonne F, dans la feuille qui porte le nom de l'apprenant
' auquel i fait référence. Pour cela, on se positionne en F10000 dans la feuille de l'apprenant puis on remonte
' à la dernière cellule occupé (idem <CTRL> + <HAUT>) puis on se décale d'une cellule vers le bas.
' Dans la cellule ainsi identifiée, on place la valeur de H8 + j du tableau récapitulatif, c'est à dire le.
' nom du module suivi si ce module est coché.
                    Sheets(Range("D" & 8 + i).Value).[F10000].End(xlUp).Offset(1, 0) = Range("H" & 8 + j)
                    
' On passe au module suivant
            Next
            
' Fin de la condition si cellule "D8 + i" non vide
        End If
        
' On passe à l'apprenant suivant
    Next
    
' Petite boite message pour indiquer que tout c'est bien passé.
    Rep = MsgBox("Enregistrement effectué", vbOKOnly, "Enregistrement")
End Sub
Voilà.

Si tu as besoin d'autres explications, n'hésites pas.

A+
 
Re : report de données

un grand grand merci fredoo,

j'ai parfaitement compris le systeme de boucle, des explications super clair j'ai pu finir de développer la partie que je cherchais.

encore merci

Je penses que l'on aura encore à s'écrire car je vais essayer de nouvelles choses dans ce programme comme de reprendre les information des feuilles des apprenants pour les mettre sur un formulaire de consultation en cascade, mais bon chaque chose en son temps alors merci encore

@+
 
Re : report de données

bonjour fredoo,

j'ai remarqué un petit probleme car lorsque la moyenne d'execution= 0 forcement aucune activité n'est faite donc aucun report dans le tableau de l'apprenant, par contre le prochain enregistrement va effacer le 0 dans le tableau de l'apprenant (faussant la moyenne).

J'essaye de lui rajouter:

If Range("k15") = 0 Then
Sheets(Range("D" & 8 + i).Value).[F10000].End(xlUp).Offset(1, 0) = Range("pas de fpp")

afin d'enlever la case vide devant le 0 et que l'enregistrement ne puisse effecer le 0.
mais je ne vois pas ou, a moins que l'on puisse lui dire que lorsque dans la colonne g de l'apprenant nous avons 0, le prochain enregistrement doit se faire dessous.

merci
 
Re : report de données

fredoo,

garce à tes explications j'ai trouvé la solution merci encore,

je l'ai mis en discussion mais peut etre à tu la solution concernant la possibilité de renvoyer les valeurs dans un classeur différent appelé "personnel" (bien sur les feuille porteront les noms des aprenants)

merci

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
560
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…