Générer un tableau au fur et à mesure du remplissage d'un autre tableau
Bonjour à tous
Merci déjà pour tous les précieux conseils que j'ai pu trouver en lisant certains posts de ce site.
Dans le cadre d'un recrutement, je souhaiterais générer automatiquement un tableau sur une feuille (bilan scolaire),
au fur et à mesure que le tableau principal (recrutement) sera rempli.
Le tableau du bilan scolaire devrait récupérer au fur et à mesure certaines des informations du tableau principal, le reste des données sera rempli manuellement. J'ai donc indiqué dans mon document les cases que je souhaite récupérer.
Je ne maitrise pas énormément Excel et j'aimerais être guidée en "pas à pas" pour bien comprendre la marche à suivre. Ce fichier sera au final partagé sur un cloud.
Je vous remercie par avance des conseils que vous pourrez me donner.
A très bientôt
Alexandra
Bonjour,
Vous avez bien fait de préciser que le fichier sera "sur un cloud" car ça change tout. Pouvez-vous préciser davantage le mode d'utilisation de ce cloud :
- le fichier est-il sur google drive, ouvert avec Google Sheets dans le navigateur ?
- Ou bien sur un onedrive/sharepoint, ouvert dans le navigateur avec Excel Online ?
- Ou bien téléchargé en local et ré-envoyé sur le serveur après modification ?
- Autre (dropbox, etc.) ?
Ca va beaucoup influer sur la méthode de résolution, a priori un script, qui malheureusement dépend de la plateforme utilisée.
Il y aura aussi besoin que vous partagiez votre fichier.
Bonne journée
Bonjour
il sera hébergé sur le cloud de l'éducation nationale, je pense plutôt pour excel online. Si possible de me préciser où je peux trouver cette information spécifique car elle n'apparait pas dans les propriétés du fichier sur le cloud.
je joint le fichier également
Merci à vous
Hum,
Je lis ici que le service de l'éducation nationale "Nuage" utilise NextCloud. C'est un autre hébergeur, qui propose en effet l'édition des documents office "directement dans l'application" mais via des extensions "non officielles", parfois basées sur LibreOffice.
En d'autres termes, dans ces conditions, ni les scripts ni meme les formules "modernes" ne permettront de résoudre votre question. Il y a trop de variables qui peuvent poser des problèmes de compatibilité…
Par contre, si vous téléchargez et ré-uploadez votre fichier (donc édition sur votre application Excel en local), alors une solution VBA est envisageable je pense (et probablement le plus simple).
Merci pour ce complément d'information,
Pouvez-vous m'expliquer la solution possible ainsi je ferais la mise à jour d'un fichier directement sur mon ordinateur.
En vous remerciant par avance
Alexandra
EDIT : si vous installez sur votre Pc l'app de synchronisation NextCloud (cf. page 6 de cette présentation), alors vous aurez une synchronisation sur le Cloud de vos fichiers en local, comme sur OneDrive/GDrive ou autre. Donc à partir de là la solution VBA est acceptable (juste que si vous ouvrez le fichier depuis le navigateur ou votre smartphone vous ne pourrez pas ajouter des nouveaux tableaux, il faudra passer par votre PC).
Pour vous expliquer la solution possible donc, on va ajouter une macro (VBA) à votre fichier. Une macro c'est du code qui va effectuer une suite d'instructions, en l'occurence créer vos nouveaux tableaux. Pour lancer la macro je (ou les autres contributeurs) vais ajouter un bouton dans votre fichier, en cliquant dessus ça va lancer la macro qui va créer les tableaux en question.
Re,
Voici ci-joint votre fichier un peu MAJ. J'ai mis un tableau structuré dans la feuille de recrutement car c'est ce que vous devriez utiliser. J'ai MAJ les formules de la feuilles statistiques pour y correspondre. Je vous invite à lire le lien pour comprendre l'avantage.
Pour lancer la macro, sur la feuille "bilan scolaire" cliquer sur le bouton. La macro va importer tous les élèves qui sont dans la feuille recrutement mais non dans le bilan scolaire. La recherche de correspondance se fait via les "ID". Pensez à activer les macros.
Je mets ci-après le code VBA utilisé dans le fichier :
Option Explicit
Public Sub MAJBilan()
' listing eleves deja ajoutes : colonne A de la feuille bilan
Dim existingVals As Variant
With ShtBilan
existingVals = WorksheetFunction.Transpose( _
Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2)
End With
' extraction des IDs de la colonne A
Dim existingIDs As Object
Set existingIDs = CreateObject("Scripting.Dictionary")
Dim i As Long
For i = LBound(existingVals) To UBound(existingVals)
If CStr(existingVals(i)) = "id" Then existingIDs.Add CStr(existingVals(i + 1)), Nothing
Next i
' parcours des eleves du tableau de recrutement,
' et ajout dans le bilan si non présents
Application.ScreenUpdating = False
Dim tblRecru As Variant
tblRecru = ShtRecru.ListObjects(1).DataBodyRange.Value2
Dim addedStdts As New Collection ' liste des eleves ajoutes pour recap
For i = LBound(tblRecru, 1) To UBound(tblRecru, 1)
' id non present : a ajouter
If Not existingIDs.Exists(tblRecru(i, 2)) Then
' recup des infos
Dim infos(0 To 2) As String
infos(0) = tblRecru(i, 2): infos(1) = tblRecru(i, 3): infos(2) = tblRecru(i, 8)
' ajout du bloc dans le bilan
AjoutBloc ShtBilan.Cells(ShtBilan.Rows.Count, 1).End(xlUp).Offset(2), infos
' ajout de l'eleve dans la liste du recap
addedStdts.Add "ID : " & tblRecru(i, 2) & ", nom : " & tblRecru(i, 3)
End If
Next i
Application.ScreenUpdating = True
' message de synthese
Dim msg As String
msg = "Opération terminée : " & addedStdts.Count & " élève(s) ajoutés." & vbCrLf
Dim elv As Variant
For Each elv In addedStdts
msg = msg & vbCrLf & "- " & elv
Next elv
MsgBox msg, vbInformation, "Ajout des élèves dans le bilan terminé"
End Sub
Private Sub AjoutBloc(TopLeftCell As Range, infos() As String)
ShtVBA.Cells(1, 1).CurrentRegion.Copy
TopLeftCell.PasteSpecial xlPasteAll
Application.CutCopyMode = False
TopLeftCell.Offset(1).Resize(1, 3).Value2 = infos
End Sub
Private Sub testAjout()
Dim infos(0 To 2) As String
infos(0) = "id": infos(1) = "nom prenom": infos(2) = "L.Weiss Acheres"
AjoutBloc ThisWorkbook.Worksheets("bilan scolaire").Range("A20"), infos
End SubMerci pour ce travail, je vais récupérer le document et le tester et j'essayerais de percer le mystère autour des macros, quand je serais plus grande.