Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2463 connectés 

 

 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  76  77  78  ..  105  106  107  108  109  110
Auteur Sujet :

[Topic Unique] Excel : Keep calm and Pivot Table !

n°3394159
arnuche
Posté le 10-03-2021 à 08:12:58  profilanswer
 

Reprise du message précédent :
Ah d'accord, donc Outlook est synchronisé aussi avec l'agenda d'Android ?


Message édité par arnuche le 10-03-2021 à 08:29:42
mood
Publicité
Posté le 10-03-2021 à 08:12:58  profilanswer
 

n°3394162
flash_gord​on
Posté le 10-03-2021 à 09:34:50  profilanswer
 

Outlook n'est qu'un outil, il ne se synchronise pas avec "l'agenda android". Il permet de synchroniser les comptes prévus pour être synchronisés partout (exchange, activesync..). Comptes qui peuvent êtres eux aussi synchronisés avec android.
 
Le problème c'est comme j'essaie de te faire comprendre, c'est que au lieu de partir de la question "quel compte et procédé choisir pour avoir un calendrier exploitable partout ?", tu es parti de la question "comment exploiter le calendrier que j'ai déja commencé à utiliser sans vraiment le choisir?".
 
D'où ton problème actuel.

Message cité 1 fois
Message édité par flash_gordon le 10-03-2021 à 09:51:20

---------------
Survivre à sa migration WP->Android /  Les features Windows que vous ne connaissez pas
n°3394163
arnuche
Posté le 10-03-2021 à 10:21:43  profilanswer
 

flash_gordon a écrit :

Outlook n'est qu'un outil, il ne se synchronise pas avec "l'agenda android". Il permet de synchroniser les comptes prévus pour être synchronisés partout (exchange, activesync..). Comptes qui peuvent êtres eux aussi synchronisés avec android.


Je ne connais pas exchange et activesync. J'ai du mal avec ces notions de comptes, je n'utilise même pas mon adresse Gmail (que j'ai dû créer quand j'ai acheté mon smartphone).
Pour moi l'e-mail est une chose, l'agenda en est une autre. Même si je comprends en vous lisant qu'il y a moyen de créer des interactions (comme je l'ai vu récemment pour Gmail en fait).
 
Du coup j'ai toujours du mal à comprendre ce que je dois faire  :??: , puisque la réponse de pwarlk laissait entendre que je n'avais rien à changer et que je pouvais synchroniser mon agenda facilement avec Outlook.
 

flash_gordon a écrit :

Le problème c'est comme j'essaie de te faire comprendre, c'est que au lieu de partir de la question "quel compte et procédé choisir pour avoir un calendrier exploitable partout ?", tu es parti de la question "comment exploiter le calendrier que j'ai déja commencé à utiliser sans vraiment le choisir?".
 
D'où ton problème actuel.


Il n'y avait aucune raison que je me pose cette question quand j'ai acheté mon 1er smartphone puisque l'idée de sauver l'agenda en xls ne m'est venue que récemment.

Message cité 1 fois
Message édité par arnuche le 10-03-2021 à 10:25:09
n°3394164
Ptit loup
Quand c'est flou, y'a un loup
Posté le 10-03-2021 à 10:45:18  profilanswer
 

Tu confonds bcp de notions.
 
Le compte gmail sur un smartphone Android ne te sert pas (ou pas forcément) pour avoir des mails... mais pour avoir une authentification sur ton téléphone (et les appli du store entre autre).
 
De la même façon ton agenda n'est pas "sur ton téléphone"... mais est hébergé sur un serveur, et tu y accèdes depuis ton téléphone qui lui même se synchronise... ton PC peut le faire de la même façon (ou une tablette ou un autre téléphone,...)
 
Quoi qu'il en soit, c'est hors sujet avec le topic... tu voulais bien utiliser Excel, mais tu voulais développer une "appli" complète pour importer/afficher un fichier plat dans un format qui te convient à toi... on peut t'aider sur un bout de code, mais pas te développer tout le truc (qui comme on te l'a montré ici est sans intérêt).

n°3394165
flash_gord​on
Posté le 10-03-2021 à 10:58:08  profilanswer
 

d'autant plus que si le but est de ne pas changer d'habitudes, le soft pour generer son calendrier existe, c'est juste que c'est payant et qu'il veut pas payer.
 


---------------
Survivre à sa migration WP->Android /  Les features Windows que vous ne connaissez pas
n°3394169
pwarlk
Posté le 10-03-2021 à 12:19:53  profilanswer
 

arnuche a écrit :


Je ne connais pas exchange et activesync. J'ai du mal avec ces notions de comptes, je n'utilise même pas mon adresse Gmail (que j'ai dû créer quand j'ai acheté mon smartphone).
Pour moi l'e-mail est une chose, l'agenda en est une autre. Même si je comprends en vous lisant qu'il y a moyen de créer des interactions (comme je l'ai vu récemment pour Gmail en fait).

 

Du coup j'ai toujours du mal à comprendre ce que je dois faire :??: , puisque la réponse de pwarlk laissait entendre que je n'avais rien à changer et que je pouvais synchroniser mon agenda facilement avec Outlook.

 


 

Ah bah si par calendrier tu veux dire que c'est sur une appli de ton téléphone et pas un serveur (google calendar, outlook, yahoo, etc.) tu vas pas aller loin.

 

Ton compte Google regroupe gmail, google calendar, et plein d'autres.
Une fois ton calendrier sur ton compte google, il est accessible depuis n'importe quel outil (navigateur, outlook, etc.) sur pc si tu te connectes au compte google.

 

Mais on vire au HS là.

n°3394195
arnuche
Posté le 10-03-2021 à 18:50:32  profilanswer
 

Ptit loup a écrit :

De la même façon ton agenda n'est pas "sur ton téléphone"... mais est hébergé sur un serveur


Disons qu'à la base, les infos de l'agenda sont stockées sur le téléphone (qui est rarement connecté au web) puisque c'est sur mon smartphone que je crée les événements, et je suppose qu'il envoie automatiquement son contenu au serveur quand je me connecte via wi-fi (notamment pour Whatsapp).
 

pwarlk a écrit :

Ah bah si par calendrier tu veux dire que c'est sur une appli de ton téléphone et pas un serveur (google calendar, outlook, yahoo, etc.) tu vas pas aller loin.


Bah oui, c'est l'agenda du smartphone. J'ai pas cherché plus loin, ça m'a suffit jusqu'à présent.
 

pwarlk a écrit :

Ton compte Google regroupe gmail, google calendar, et plein d'autres.
Une fois ton calendrier sur ton compte google, il est accessible depuis n'importe quel outil (navigateur, outlook, etc.) sur pc si tu te connectes au compte google.


D'accord, dans ce cas je pourrais installer Outlook qui me servirait juste à récupérer l'agenda synchronisé avec Gmail et l'exporter en csv pour en faire un format plus digeste pour Excel que l'ics.

n°3394215
Ptit loup
Quand c'est flou, y'a un loup
Posté le 11-03-2021 à 09:28:04  profilanswer
 

Je ne comprends pas pourquoi tu persistes à vouloir un affichage dans Excel ... qui va t'apporter quoi ? tu as des calculs à faire avec ? des statistiques ?
Il faudrait nous en dire plus sur l'appli que tu utilises exactement... et le téléphone aussi sûrement, connecté via un compte Samsung, Google/Gmail, autre... ?
 
Ca reste HS tout de même...  

n°3394217
arnuche
Posté le 11-03-2021 à 10:07:17  profilanswer
 

Ptit loup a écrit :

Je ne comprends pas pourquoi tu persistes à vouloir un affichage dans Excel ... qui va t'apporter quoi ?


Parce que ça me permet de garder une trace de toutes mes activités, et ce serait accessible rapidement (si je fais un fichier par mois par exemple, je pourrais même en faire un pdf).
Et les formules d'Excel permettent de retrouver rapidement un événement, ou de les classer par durée ou périodicité.


Message édité par arnuche le 11-03-2021 à 10:18:39
n°3394366
otobox
Maison fondée en 2005
Posté le 13-03-2021 à 09:50:54  profilanswer
 

arnuche a écrit :

Bonjour,
 
Connaissez-vous un moyen de convertir un agenda ics en fichier Excel avec une apparence d'agenda, comme sur smartphone ?
 
On trouve beaucoup de tutos sur la conversion d'ics en xls mais c'est toujours la même explication basique : j'ai testé, j'obtiens une seule colonne avec plein d'informations inexploitables.
 
Pour le coup je l'ai sauvé en csv après l'avoir ouvert dans Excel puis ouvert avec le bloc-notes pour pouvoir copier facilement ces lignes, il y en a presque 18.000 !
Les lignes qui m'importent sont SUMMARY (avec le nom d'événement), DTSTART et DTEND.


 
Trève de bavardages, il veut faire un truc, on est qui pour juger du bien fondé ?
 
Je suis dans un bon jour, voilà une macro vite fait qui correspond à ton besoin :
-Sélection d'un fichier qui doit être formaté comme tu l'as posté
- Ouvre ce fichier et écrit dans un onglet "Calendrier" pour chaque évènement la date début, heure début, date fin, heure fin et sommaire
 
Attention, la macro efface les résultats précédents. En effet, j'ai recyclé le code que j'utilise régulièrement quand je dois extraire des infos d'un fichier texte (les fonctions "log" ), la flemme de le réécrire pour conserver les données existantes.
 

Code :
  1. Option Explicit
  2. Private Const LOG As String = "Calendrier" 'Nom de l'onglet LOG
  3. Private LigneLog As Integer
  4. 'Supprime un log
  5. '
  6. Private Sub SupprimerLog()
  7. 'Vérifier si un onglet LOG existe dans ce fichier Excel
  8. 'Si oui, le supprime
  9. Dim ws As Worksheet
  10.     For Each ws In ThisWorkbook.Worksheets
  11.         If ws.Name = LOG Then
  12.             Application.DisplayAlerts = False
  13.             ws.Delete
  14.             Application.DisplayAlerts = True
  15.             Exit Sub
  16.         End If
  17.     Next
  18. End Sub
  19. 'Crée un nouveau LOG
  20. 'En entrée :
  21. '   titre : un titre (type string)
  22. '   tstrEntete : une chaine de caractères string pour les entêtes séparés par des ;
  23. '
  24. Private Sub CreerNouveauLog(strEntete As String)
  25. Dim ws As Worksheet
  26. Dim i As Integer
  27. Dim tabEntete() As String
  28.     'Effacer l'éventuel log précédent
  29.     SupprimerLog
  30.    
  31.     'Créer un nouvel onglet log
  32.     Set ws = ThisWorkbook.Worksheets.Add
  33.     ws.Name = LOG
  34.    
  35.     'Split des valeurs ajoutées
  36.     tabEntete = Split(strEntete, ";" )
  37.    
  38.     'Renseigne les entêtes
  39.     For i = 0 To UBound(tabEntete)
  40.         Cells(1, i + 1) = tabEntete(i)
  41.         Cells(1, i + 1).Interior.ColorIndex = 44
  42.         Columns(i + 1).EntireColumn.AutoFit
  43.     Next i
  44.    
  45.     'Rajouter un filtre sur les entêtes
  46.     ws.Range(Cells(1, 1), Cells(1, i)).AutoFilter
  47.    
  48.     'Initialise la 1ere ligne vide du log
  49.     LigneLog = 2
  50.    
  51. End Sub
  52. 'Ajouter un enregistrement
  53. 'Les données ajoutées sont une chaine de caractères avec les valeurs séparées par un ;
  54. 'Ex : AjtLog "Valeur 1;Valeur 2;Valeur3"
  55. '
  56. Private Sub AjtLog(valeurs As String)
  57. Dim tabAjt() As String
  58. Dim i as Integer
  59.     'Split des valeurs ajoutées en tableau
  60.     tabAjt = Split(valeurs, ";" )
  61.    
  62.     'Ajoute les valeurs
  63.     For i = 0 To UBound(tabAjt)
  64.         Cells(LigneLog, i + 1) = tabAjt(i)
  65.         Columns(i + 1).EntireColumn.AutoFit
  66.     Next i
  67.    
  68.     'Incrémente la prochaine ligne vide
  69.     LigneLog = LigneLog + 1
  70. End Sub
  71. 'Sélectionne un fichier
  72. 'Retourne le nom complet du fichier en filtrant éventuellement par type de fichier
  73. '
  74. Private Function GetFile(Optional titre As String, Optional filtre As String) As Variant
  75. Dim fichier As Variant
  76.    
  77.     If titre = "" Then titre = "Sélectionner un fichier"
  78.     If filtre = "" Then filtre = "Tous les fichiers (*.*),*.*"
  79.     'Affiche la boîte de dialogue "Ouvrir"
  80.     fichier = Application.GetOpenFilename(filtre)
  81.    
  82.     If fichier = False Then Exit Function
  83.    
  84.     'Retourne le chemin et le nom du fichier sélectionné.
  85.     GetFile = fichier
  86.    
  87. End Function
  88. 'Retourne la date et l'heure au format calendrier au format Excel
  89. 'Formate la date JOUR/MOIS/ANNEE;HEURES:MINUTES:SECONDES
  90. 'Note : le format retourné est compatible avec ce qui est attendu pour écrire dans l'onglet Calendrier
  91. '
  92. Private Function GetDate(str As String) As String
  93. Dim tbl() As String
  94.     tbl = Split(str, "T" )
  95.     tbl(1) = Replace(tbl(1), "Z", "" )
  96.    
  97.     'Retourne la date et l'heure formatée
  98.     GetDate = Right(tbl(0), 2) & "/" & Mid(tbl(0), 5, 2) & "/" & Left(tbl(0), 4)
  99.     GetDate = GetDate & ";" & Left(tbl(0), 2) & ":" & Mid(tbl(0), 3, 2) & ":" & Right(tbl(0), 2)
  100. End Function
  101. 'Routine principale
  102. 'Ouvre un fichier ICS et le converti formaté dans Excel
  103. '
  104. Sub ConvertirCalendrier()
  105. Dim fic As Variant
  106. Dim ficIndex As Integer
  107. Dim ws As Worksheet
  108. Dim lineFic As String
  109. Dim tbl() As String
  110. Dim strLog As String
  111. On Error GoTo gestErr
  112.     'Sélection d'un fichier ICS
  113.     'Sort de la macro si aucun fichier n'a été sélectionné
  114.     fic = GetFile
  115.     If IsEmpty(fic) Then Exit Sub
  116.    
  117.     'Supprime et initialise un nouvel Onglet calendrier
  118.     CreerNouveauLog ("Date début;Heure début;Dat fin;Heure fin;Sommaire" )
  119.    
  120.     'Formate les colonnes type date et colonne type Heure
  121.     Worksheets(LOG).Range("A:A" ).NumberFormat = "dd/mm/yy;@"
  122.     Worksheets(LOG).Range("B:B" ).NumberFormat = "hh:mm;@"
  123.     Worksheets(LOG).Range("C:C" ).NumberFormat = "dd/mm/yy;@"
  124.     Worksheets(LOG).Range("D:D" ).NumberFormat = "hh:mm;@"
  125.    
  126.     'Ouvre le fichier et le parcours
  127.     ficIndex = FreeFile()
  128.     Open fic For Input As #ficIndex
  129.    
  130.     'Gèle l'affichage pour aller plus vite
  131.     Application.ScreenUpdating = False
  132.    
  133.     While Not EOF(ficIndex) '
  134.         Line Input #ficIndex, lineFic
  135.         tbl = Split(lineFic, ":" )
  136.         Select Case tbl(0):
  137.             Case "DTSTART" 'Date et heure de début
  138.                 strLog = GetDate(tbl(1))
  139.                
  140.             Case "DTEND" 'Date et heure de fin
  141.                 strLog = strLog & ";" & GetDate(tbl(1))
  142.                
  143.             Case "SUMMARY" 'Sommaire
  144.                 strLog = strLog & ";" & tbl(1)
  145.                
  146.         End Select
  147.        
  148.         'Ecriture de la ligne à la fin du bloc evenement
  149.         If lineFic = "END:VEVENT" Then AjtLog strLog
  150.        
  151.     Wend
  152.    
  153. gestErr:
  154.     'Si erreur afficher le message d'erreur
  155.     If Err.Number <> 0 Then MsgBox Err.Description
  156.     'Ferme le fichier erreur ou non
  157.     Close #ficIndex
  158.     'Rétabli l'affichage
  159.     Application.ScreenUpdating = True
  160.    
  161. End Sub


Tip : Avant de faire un copier-coller de ce code pour le mettre dans une module, fais d'abord un double clic dans le bloc code pour supprimer les numéros de ligne ;)


Message édité par otobox le 13-03-2021 à 11:01:52

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
mood
Publicité
Posté le 13-03-2021 à 09:50:54  profilanswer
 

n°3394367
arnuche
Posté le 13-03-2021 à 09:57:28  profilanswer
 

Woaw, merci beaucoup !
Je n'ai jamais utilisé de macro et ne sais pas où je dois taper ça  :o , je vais chercher. :jap:

n°3394368
otobox
Maison fondée en 2005
Posté le 13-03-2021 à 10:05:39  profilanswer
 

arnuche a écrit :

Woaw, merci beaucoup !
Je n'ai jamais utilisé de macro et ne sais pas où je dois taper ça  :o , je vais chercher. :jap:


Tu ouvres Excel
Tu fais ALT+F11
Tu vas dans la partie à gauche :
Clic droit sur la ligne VBA Project "Nom du fichier" > Insertion > Module
Tu colles le code dans ce module
Dans Excel, Macro > ConvertirCalendrier


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°3394369
arnuche
Posté le 13-03-2021 à 10:16:29  profilanswer
 

Merci mais je ne vois pas de ligne VBA Project et quand je vais dans Insertion, "Module" reste grisé, donc pas moyen de coller le code  :??:
 
edit : la ligne VBA Project apparaît si j'ouvre d'abord un fichier.
 
edit 2 : il a détecté une petite erreur dans ton script, il était mis 2 x fois de suite "Private" (ligne 8), j'en ai effacé 1.
 
edit 3 : il détecte un autre souci à la ligne Private Sub AjtLog(valeurs As String) et il a mis valeur non définie pour le i.
Mais je vois qu'il a quand-même créé un onglet Calendrier avec 5 colonnes mais rien d'écrit en-dessous.

Message cité 1 fois
Message édité par arnuche le 13-03-2021 à 10:40:02
n°3394372
otobox
Maison fondée en 2005
Posté le 13-03-2021 à 11:00:39  profilanswer
 

arnuche a écrit :

Merci mais je ne vois pas de ligne VBA Project et quand je vais dans Insertion, "Module" reste grisé, donc pas moyen de coller le code  :??:
 
edit : la ligne VBA Project apparaît si j'ouvre d'abord un fichier.
 
edit 2 : il a détecté une petite erreur dans ton script, il était mis 2 x fois de suite "Private" (ligne 8), j'en ai effacé 1.
 
edit 3 : il détecte un autre souci à la ligne Private Sub AjtLog(valeurs As String) et il a mis valeur non définie pour le i.
Mais je vois qu'il a quand-même créé un onglet Calendrier avec 5 colonnes mais rien d'écrit en-dessous.


Edit 1 : oui, il faut aussi ouvrir un fichier Excel
Edit 2 : Tu as bien fait, ça m'apprendra à affiner le code directement sur HFR sans le tester dans Excel
Edit 3 : Oui, alors là je ne comprends pas pourquoi ça marchait chez moi comme ça, il faut effectivement déclarer la variable i comme integer, rajoute la ligne 7 ci dessous dans la routine AjtLog :

Code :
  1. 'Ajouter un enregistrement
  2. 'Les données ajoutées sont une chaine de caractères avec les valeurs séparées par un ;
  3. 'Ex : AjtLog "Valeur 1;Valeur 2;Valeur3"
  4. '
  5. Private Sub AjtLog(valeurs As String)
  6. Dim tabAjt() As String
  7. Dim i As Integer
  8.     'Split des valeurs ajoutées en tableau
  9.     tabAjt = Split(valeurs, ";" )
  10.  
  11.     'Ajoute les valeurs
  12.     For i = 0 To UBound(tabAjt)
  13.         Cells(LigneLog, i + 1) = tabAjt(i)
  14.         Columns(i + 1).EntireColumn.AutoFit
  15.     Next i
  16.  
  17.     'Incrémente la prochaine ligne vide
  18.     LigneLog = LigneLog + 1
  19. End Sub


C'est déjà un bon début si un onglet avec les entêtes est créé !


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°3394374
arnuche
Posté le 13-03-2021 à 11:23:19  profilanswer
 

Merci, il n'y a plus d'erreur détectée mais il n'y a toujours rien sous les 5 en-têtes.
 
Cela dit, l'exemple donné plus haut par flash_gordon avec le csv (si je passe par Oulook pour créer le csv) a l'air d'être une bonne base pour arriver à une apparence de calendrier (ordonné en 7 jours qui commencent le lundi, même si le 1er du mois n'est pas un lundi, quitte à faire abstraction ou laisser vides les jours avant le 1er si le 1er est un jeudi par exemple. Encore que, je peux reprendre les événements des jours de la fin du mois précédents, ça n'a pas d'importance) ;
https://forum.hardware.fr/hfr/Windo [...] m#t3394143
Donc je suppose qu'il serait plus simple de partir de là et faire une macro qui concernerait plus la mise en page que la sélection de données.
 
edit : j'ai vu qu'il y avait moyen d'enregistrer des processus de mise en page pour en faire des macros, je pourrais faire ça pour automatiser le processus si je parviens à le faire pour un mois.

Message cité 1 fois
Message édité par arnuche le 13-03-2021 à 12:52:54
n°3394384
otobox
Maison fondée en 2005
Posté le 13-03-2021 à 12:55:25  profilanswer
 

arnuche a écrit :

Merci, il n'y a plus d'erreur détectée mais il n'y a toujours rien sous les 5 en-têtes.
 
Cela dit, l'exemple donné plus haut par flash_gordon avec le csv (si je passe par Oulook pour créer le csv) a l'air d'être une bonne base pour arriver à une apparence de calendrier (ordonné en 7 jours qui commencent le lundi, même si le 1er du mois n'est pas un lundi, quitte à faire abstraction ou laisser vides les jours avant le 1er si le 1er est un jeudi par exemple. Encore que, je peux reprendre les événements des jours de la fin du mois précédents, ça n'a pas d'importance) ;
https://forum.hardware.fr/hfr/Windo [...] m#t3394143
Donc je suppose qu'il serait plus simple de partir de là et faire une macro qui concernerait plus la mise en page que la sélection de données.
 
edit : j'ai vu qu'il y avait moyen d'enregistrer des processus de mise en page pour en faire des macros, je pourrais faire ça pour automatiser le processus si je parviens à le faire pour un mois.


S'il n'y a rien qui s'affiche sous les entêtes, c'est que ton fichier n'est pas formaté comme tu le montrais au début :

Code :
  1. BEGIN:VEVENT
  2. DTSTART:20210121T093000Z
  3. DTEND:20210121T100000Z
  4. DTSTAMP:20210309T153954Z
  5. UID:(...)h68b9jc8rj2e9j6gq38d9nc4@google.com
  6. CREATED:20201217T160625Z
  7. DESCRIPTION:
  8. LAST-MODIFIED:20201217T160625Z
  9. LOCATION:
  10. SEQUENCE:0
  11. STATUS:CONFIRMED
  12. SUMMARY:Courses
  13. TRANSP:OPAQUE
  14. BEGIN:VALARM
  15. ACTION:DISPLAY
  16. DESCRIPTION:This is an event reminder
  17. TRIGGER:-P0DT0H45M0S
  18. END:VALARM
  19. END:VEVENT


Pas de CSV ici.
 
J'ai fait selon ta demande initiale : présenter les données sous forme de liste avec 5 colonnes (j'ai rajouter les heures de débuts et fin, si ça ne t'intéresse pas, tu peux toujours supprimer les colonnes).
 
Après, pour ton formatage, faire un onglet par mois est une mauvaise idée, ça risque de mettre Excel sur les genoux et limiter à terme le nombre de mois (limite du logiciel : 255 onglets, ça représente 21 ans et 3 mois maxi, y'a de quoi faire mais c'est limité dans l'absolu).
 
La meilleure solution à mon avis est de garder cette liste et ensuite faire un TCD "Keep calm and PivotTable !"


Message édité par otobox le 13-03-2021 à 13:06:24

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°3394386
arnuche
Posté le 13-03-2021 à 13:15:56  profilanswer
 

En effet, ou alors créer un fichier intermédiaire pour ne garder que les lignes qui concernent une année (ou un mois) et faire pareil tous les ans.
 
Pour le fichier ics, il commence en effet par 25 lignes d'informations générales avant le cycle répétitif de 19 lignes ;

Code :
  1. BEGIN:VCALENDAR
  2. PRODID:-//Google Inc//Google Calendar 70.9054//EN
  3. VERSION:2.0
  4. CALSCALE:GREGORIAN
  5. METHOD:PUBLISH
  6. X-WR-CALNAME:monemail@gmail.com
  7. (...)


 
edit : quoique, je viens de voir qu'au début du fichier, ce sont 14 lignes et pas 19 par événement  :heink:  


Message édité par arnuche le 13-03-2021 à 13:18:48
n°3394412
otobox
Maison fondée en 2005
Posté le 13-03-2021 à 14:52:41  profilanswer
 

La routine cherche dans le fichier les lignes qui commencent par DTSTART, DTEND, SUMMARY. Elle déclenche l'écriture de la ligne dans Excel quand elle rencontre la ligne END:VEVENT.
 
Donc qu'importe combien de lignes il y a avant/après les blocs d’événements (sauf si ces lignes font boguer la routine mais ça je ne peux pas le savoir), pourvu que les lignes soient formatées comme tu l'as indiqué dans ton premier message, ça devrait fonctionner.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°3394431
arnuche
Posté le 13-03-2021 à 16:50:39  profilanswer
 

Elles sont bien formatées comme ça donc je ne sais pas pourquoi ça reste vide sous les 5 en-têtes. :??:
 
edit : j'ai ré-essayé à partir de l'ics (alors que ce matin j'avais tenté à partir d'un csv lui-même issu de l'ics converti par Excel), et maintenant il importe les données. :)  
 
Mais avec quelques bizarreries ;
-certaines dates ne sont pas au bon endroit (par exemple un événement de 2017 entre 2 de 2016)
-le format de date pas toujours le même selon les lignes
-certaines dédoublées voire présentes en 12 exemplaires avec des variantes dans les colonnes à droite
-les lettres avec accent (é è ê) et le sigle € sont mal interprétés
-l'année est utilisée à la place des heures : tous les événements de 2016 commencent et finissent à 20:16


Message édité par arnuche le 13-03-2021 à 17:44:09
n°3394490
arnuche
Posté le 14-03-2021 à 16:41:53  profilanswer
 

J'avance  :)  : j'ai installé Outlook sans le lier à un compte, ça permet quand-même d'utiliser sa fonction calendrier.
 
J'ouvre l'ics avec Outlook qui l'affiche à droite du calendrier Outlook, clic droit sur celui que je viens d'importer, je l'exporte en csv en choisissant la période qui m'intéresse (très pratique pour sélectionner mois par mois).
 
Je l'importe via les données dans Excel, bien cocher "virgule" comme séparateur puis attribuer un format à chaque colonne ; je transforme ça en tableau avec en-têtes puis je classe par heure de début puis par date de début et je me retrouve avec tout dans le bon ordre. :wahoo:  
 
Maintenant j'aimerais trouver le moyen d'agencer ça en semaines avec une petite colonne par jour, comme dans un calendrier.


Message édité par arnuche le 14-03-2021 à 16:43:07
n°3394495
flash_gord​on
Posté le 14-03-2021 à 17:21:12  profilanswer
 

Pourquoi tu ne fais pas ça dans outlook maintenant que tu as importé tes données dedans ? qu'est-ce que tu y gagnes à vouloir exporter dans excel ?
Tu as accompli le but de départ : tu as tes données en offline sur ton ordi...


Message édité par flash_gordon le 14-03-2021 à 17:31:11

---------------
Survivre à sa migration WP->Android /  Les features Windows que vous ne connaissez pas
n°3394496
arnuche
Posté le 14-03-2021 à 20:28:38  profilanswer
 

Ce n'est pas mon but de départ, j'ai déjà répondu à ça plus haut.
Et pourquoi te montrer si hostile à Excel sur le topic ... Excel !?  :heink:

n°3394497
flash_gord​on
Posté le 14-03-2021 à 20:34:52  profilanswer
 

Parceque c'est pas le bon outil.
 
Enfoncer une vis avec un marteau, ça hérissera tous les bricoleurs du monde.
Gerer un calendrier avec Excel, ça hérisse forcément les informaticiens.
 
Et avant que tu tu me traites encore de personne hostile à excel, je te recommande de lire la page 1 de ce topic.  
C'est moi qui l'ai faite, parceque je kiffe excel. Et c'est justement pour ça que je n'enfonce pas des vis avec.
 
Tout ce que tu demandes, les affichages en colonne, en ligne etc,  outlook le fait nativement. Pourquoi vouloir à tout prix reconstruire ça à la main dans un logiciel pas prévu pour ?
Qu'est-ce que ça va t'apporter concretement ?  (vraie question file moi un exemple de truc que ne va pas pouvoir faire outloko)
Tu as mis tes données dans outlook là, tu as essayé de jouer avec ? ça fait absolument tout ce que tu demandes. Tout.


Message édité par flash_gordon le 14-03-2021 à 20:41:37

---------------
Survivre à sa migration WP->Android /  Les features Windows que vous ne connaissez pas
n°3394498
arnuche
Posté le 14-03-2021 à 20:41:24  profilanswer
 

Si tu lisais tout ce que j'ai écrit, tu ne te bornerais pas à mal interpréter ce que j'ai écrit. Mon but de départ n'est PAS de gérer le calendrier avec Excel mais d'utiliser ce dernier comme outil de recherche et de classement de certains événements (même si ça peut paraître bizarre, c'est mon problème), en plus de ce que je peux faire avec les agenda de Gmail ou d'Outlook.
Merci quand-même de m'avoir mis sur la piste d'Outlook.
Je viens d'ailleurs de constater qu'il permettait une impression en pdf par périodes, bien pratique.

n°3394822
L'HdT
Les beaufs c'est bien
Posté le 18-03-2021 à 14:55:05  profilanswer
 

Bonjour, je suis confronté à un problème qui m'agace concernant des mises en forme conditionnelles, plus spécifiquement, sur la mise en forme conditionnelle permettant de faire ressortir les valeurs en double.
 
Cela se passe sur un tableau de suivi de courrier entrant dont je gère surtout la partie "formules et technique" de base (je n'ai pas un très gros niveau) et qui est rempli par d'autres personnes de mon équipe (le tableau n'est pas partagé, mais rempli à tour de rôle par deux autres personnes)
 
On a une colonne de références numériques toute bête sur laquelle j'ai appliqué une règle de MFC "valeurs en double" avec comme cible "=$A:$A" pour que ça s'applique à toute la colonne A. Seulement voilà, cette foutue règle se multiplie et au bout de deux semaines je me retrouve avec 25 règles "valeurs en double" s'appliquant à une seule cellule de la colonne A. Je dois faire le ménage chaque semaine pour réappliquer proprement la règle à "=$A:$A"
C'est très énervant  :fou:
 
Sauriez-vous
 
1) D'où peut venir mon erreur ?
 
2) Si pas de solution, comment figer totalement les règles de MFC ?
 
Je vous remercie d'avance
Et merci à ce topic qui m'a sorti de la purée plus d'une fois, vous êtes au top  :jap:


Message édité par L'HdT le 18-03-2021 à 14:56:13
n°3394883
Ptit loup
Quand c'est flou, y'a un loup
Posté le 19-03-2021 à 11:34:09  profilanswer
 

J'ai aussi ce pb de MFC qui se duplique de façon pas très propre, et qui vient vite alourdir les MFC justement.
Pas trouvé mieux pour l'instant que de virer régulièrement celles en trop... (faudrait idéalement que je fasse une macro pour les recréer sur les fichiers les plus volumineux, histoire de simplifier le truc, mais j'ai pas encore fait)
Ce qu'il n'aime pas, c'est le copier/coller de lignes qui provoque vite ça j'ai l'impression.

n°3395134
rab68
Posté le 22-03-2021 à 18:17:17  profilanswer
 

bonjour
je suis débutant en VBA, j'aurai besoin de votre aide pour faire du tri dans un fichier excel.
J'aimerai optimiser tous ça pour que ça s'exécute le plus rapidement possible.
J'ai vu qu'on pouvait supprimer le rafraichissement automatique pour n'avoir que le résultats final, mais je ne vois comment implémenter cette fonction.
Par ailleurs peut on transformer le tout en une seule macro sans recourir à la fonction call

 

Merci de votre aide

 


Sub superTRI()

 

'TRI
    Range("G2:G69" ).Select
    ActiveWorkbook.Worksheets("Feuil3" ).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil3" ).Sort.SortFields.Add2 Key:=Range("G2:G69" ) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil3" ).Sort
        .SetRange Range("A2:S69" )
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
Call Majuscules
Call espaces

 

End Sub

 

-------------------------------

 

Sub Majuscules()

 

'de miniscules à majuscules
Range("A2:A50,B2:B50,D2:D50,F2:F50" ).Select
For Each cell In Selection
cell.Value = UCase(cell.Value)
Next cell
End Sub

 

-------------------------------

 

Sub espaces()
'espaces
Range("F2:F50" ).Select
For Each cell In Selection
cell.Value = RTrim(cell.Value)
Next cell
End Sub

 


Message cité 1 fois
Message édité par rab68 le 22-03-2021 à 18:18:29
n°3395163
otobox
Maison fondée en 2005
Posté le 23-03-2021 à 07:08:15  profilanswer
 

rab68 a écrit :

bonjour  
je suis débutant en VBA, j'aurai besoin de votre aide pour faire du tri dans un fichier excel.
J'aimerai optimiser tous ça pour que ça s'exécute le plus rapidement possible.
J'ai vu qu'on pouvait supprimer le rafraichissement automatique pour n'avoir que le résultats final, mais je ne vois comment implémenter cette fonction.
Par ailleurs peut on transformer le tout en une seule macro sans recourir à la fonction call
 
Merci de votre aide  


 
Bravo pour tes macros, c'est un bon début, je t'encourage à continuer, tu tiens le bon bout :)
 
Vite fait sans test, l'ajout du gel/degel de l'affichage et intégration des 2 routines dans la principale. Rien de bien compliqué si ça bogue, tu devrais t'en sortir si ça bloque quelque part.
 
En programmation, on essaye de séparer chaque fonction/routine, donc intégrer tes 2 sub majuscules et espace dans la principale, c'est pas le mieux. Pourquoi veux-tu le faire ? Si c'est parce que tu ne veux pas les voir dans le menu déroulant, tu peux simplement écrire Private devant Sub.
 
 

Sub superTRI()
 
'Gèle l'affichage pour aller plus vite
    Application.ScreenUpdating = False
 
'TRI
    Range("G2:G69" ).Select
    ActiveWorkbook.Worksheets("Feuil3" ).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil3" ).Sort.SortFields.Add2 Key:=Range("G2:G69" ) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil3" ).Sort
        .SetRange Range("A2:S69" )
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
'de miniscules à majuscules
    Range("A2:A50,B2:B50,D2:D50,F2:F50" ).Select
    For Each cell In Selection
        cell.Value = UCase(cell.Value)
    Next cell
 
'Espaces
    Range("F2:F50" ).Select
    For Each cell In Selection
        cell.Value = RTrim(cell.Value)
    Next cell
 
'Rétabli l'affichage
    Application.ScreenUpdating = True
End Sub
 


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°3395256
rab68
Posté le 24-03-2021 à 11:42:23  profilanswer
 

merci de ton aide je vais tester ça
concernant l'intégration des 2 sub, je pensais empiriquement qu'intégrer le tout était plus pertinent.
Sinon autre question, vous avez un livre à conseiller pour comprendre les vba, car à chaque fois je regarde sur le net mais sans savoir si la fonction est la plus pertinente pour ce que je veux faire.
 
merci

n°3395499
tymv
Posté le 27-03-2021 à 23:30:03  profilanswer
 

dites,
j'aimerais pour avancer un peu plus vite et apprendre plus facilement jouer avec les fichiers trouver sur le net comme ici :
 
https://excelfind.com/downloads/
 
que j'ai trouvé par leur chaine YT : https://www.youtube.com/watch?v=30lGSyZL3DM
 
vous pensez que c'est bien ? safe ?
 
et si vous avez aussi d'autres sites (et pourquoi pas un bouquin à me conseiller... je suis preneur !)
 
merci :jap:


---------------
[Vends]Dell 1330XPS, AthlonX3(4) 425
n°3395946
Montano5
follow the White Rabbit...
Posté le 07-04-2021 à 13:26:56  profilanswer
 

Bonjour à tous,
 
Je voudrai savoir s'il est possible avec Excel de calculer une différence de temps en comptant seulement les heures d'ouvertures et en excluant les jours non ouvrés/féries ?
 
J'ai deux cellule avec cette information:
A1: 29/03/2021 10:34:03
B1: 02/04/2021 10:22:11
 
En faisant B1-A1 Excel me retourne: 95:48:08
ce qui est juste dans l'absolu mais je voudrai le temps effectif réel pour des jours de 8h à 18h.
 
Possible ?

n°3395948
arnuche
Posté le 07-04-2021 à 13:36:07  profilanswer
 

Pas d'idée pour les jours non ouvrés/fériés mais pour les heures, je suppose que ça ira en en enlevant 14 ;
B1-A1-TEMPSVAL("14:00" )

n°3395965
kmara2
Posté le 07-04-2021 à 17:37:26  profilanswer
 

[:cerveau drapal]


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3395980
Montano5
follow the White Rabbit...
Posté le 07-04-2021 à 18:41:48  profilanswer
 

arnuche a écrit :

Pas d'idée pour les jours non ouvrés/fériés mais pour les heures, je suppose que ça ira en en enlevant 14 ;
B1-A1-TEMPSVAL("14:00" )


 
Ok merci :)
Problème: j'ai toute une liste comme ça (plus de 500 lignes) avec des temps aléatoires, parfois sur 10 mns (cool) parfois sur plusieurs jours dont le week-end (pas cool)

n°3396004
arnuche
Posté le 07-04-2021 à 23:21:08  profilanswer
 

En fait on trouve des solutions, fais une recherche sur "excel supprimer jours fériés" et "excel supprimer samedi et dimanche". Tu peux combiner ça avec TEMPSVAL.

n°3396109
kmara2
Posté le 10-04-2021 à 08:42:51  profilanswer
 

La VBA c'est un doux rêve pour moi actuellement, quand je vois qu'il est possible d'exporter directement des feuilles excel dans un powerpoint  [:bakk3]


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3396149
kmara2
Posté le 10-04-2021 à 22:51:00  profilanswer
 

Donc. On m'a demandé de faciliter la vie de quelqu'un qui réalise chaque jour les mêmes taches. Il complète un formulaire puis il a appris à lire un tcd qui se met à jour à partir du formulaire et enfin il complète une base de données pour alimenter un graphique.
Sur sa bdd il y a une ligne par jour et 6 colonnes à compléter.
Si je mets des formules dans la bdd ça va se compléter automatiquement mais le lendemain les nouvelles données vont écraser celle de la veille et le graphique va tirer la tronche...
Comment faire pour que les données saisies dans le formulaire viennent alimenter une nouvelle ligne de la bdd plutôt qu'ecraser celle de la veille ?
Vba ?


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3396151
DjiDji5943​0
Posté le 11-04-2021 à 00:01:26  profilanswer
 

Bonjour à tous,
 
Sans vba, dans données, il existe un formulaire tout fait et qui repond a ta demande.
 
Crdlmt

n°3396156
kmara2
Posté le 11-04-2021 à 10:19:44  profilanswer
 

DjiDji59430 a écrit :

Bonjour à tous,
 
Sans vba, dans données, il existe un formulaire tout fait et qui repond a ta demande.
 
Crdlmt


 
Pas compris mais ça m'a orienté vers une macro toute bête qui copie les données du petit formulaire dans la base de données en insérant une ligne en haut du tableau. Le problème c'est qu'il y a l'info "date de saisie' et la copier en haut du tableau ça foutait en l'air l'ordre chronologique de la saisie.... bah avant de terminer la macro il suffit de faire un tri du plus ancien au plus récent sur la colonne date de saisie  [:kmara2:1]  
 
Ca doit vous sembler basique  :lol:


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3396160
DjiDji5943​0
Posté le 11-04-2021 à 11:40:52  profilanswer
 

kmara2 a écrit :


Pas compris  


 
https://i.goopics.net/lvADw.jpg

Message cité 1 fois
Message édité par DjiDji59430 le 11-04-2021 à 12:21:19
n°3396207
Trotamundo​s
Posté le 12-04-2021 à 11:18:07  profilanswer
 

Salut topic,
 
Est-il possible de comparer deux bases de données pour identifier des doublons sachant que la 2e base comprend d'autres chiffres / mots ?
 
Base 1
REP_00034
REP_00035
REP_00036
REP_00038
REP_00039
REP_00040...
 
Base 2
blabla REP_00034 blabla
blabla REP_00035 blabla
blabla REP_00036 blabla
blabla REP_00037 blabla
blabla REP_00038 blabla
blabla REP_00039 blabla
blabla REP_00040...
 
L'objectif étant d'identifier le fait que REP_00037 ne figure que dans une des deux listes.
La règle de mise en surbrillance des doublons ne fonctionne pas dans ce cas.
Je m'en suis sorti en transformant la base 2 avec des "Remplacer par" car les blabla étaient identiques mais j'aurais été bloquer si ça n'avait pas été le cas.
 
Merci d'avance :jap:
 


J'ai pas ça dans le ruban déroulant :??:  
Dommage, j'aurais bien aimé tester.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  76  77  78  ..  105  106  107  108  109  110

Aller à :
Ajouter une réponse
 

Sujets relatifs
[EXCEL] Faire une mise à jour dynamique de valeur entre champsExcel : rechercher et afficher une liste
[EXCEL] Conversion/multiplication de massequestions sur la téléphonie avec free en 512k
Excel: Comment insérer automatiquement un titre à chaque page ?[excel] largeur de colonne différente
[Excel] (N00B Inside :-/ )Je veux additionner ...2 questions urgentes : Remplacer Photoshop et achat de scanner
changer la police par défaut sous Excel[Excel] Comment faire pivoter une feuille ?
Plus de sujets relatifs à : [Topic Unique] Excel : Keep calm and Pivot Table !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR