transfert d'un tableau pdf vers tableau excel exploitable [résolu]

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 !

numero10000

XLDnaute Nouveau
Bonjour,

d'un tableau contenant pour chaque ligne la date et les pointages horaires de la journée (sous la forme suivante: 6.29), je fais d'abord un simple copier-coller sur Excel.
Mes données sont correctement collées pour chaque ligne (1 ligne par jour).
Pour réinstaurer les colonnes (date du jour-1er pointage-2nd pointage-3ème pointage...), j'utilise la fonction données-convertir. Me reste un petit travail de nettoyage car certaines données sont mal distribuées et je dois donc réaffecter certaines données à telles ou telles colonnes.

Le résultat est en pièce jointe.

Là je suis confronté à mes limites de compétences:

1) Existe-t-il une fonction permettant de supprimer tous les 0 en fin de chaque ligne?

2) Existe-t-il une fonction permettant de déplacer automatiquement vers une colonne spécifique toutes les cellules contenant les données texte (CPN, MAL...) avec dans la colonne suivante les données numériques correspondantes (0.00 ou 7.00...)?

3) Je ne sais pas comment convertir les données en format horaire pour pouvoir ensuite effectuer des calculs.

4) Quelle fonction permet de calculer les amplitudes horaires (pointage sortie - pointage entrée) sachant que les données ne sont pas en centièmes mais en heures et minutes?

Merci de votre aide 🙂
 

Pièces jointes

Dernière édition:
Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour numero10000,

Le problème est assez ardu à résoudre, il se situe principalement au niveau du format des cellules de la colonne de dates B.

J'ai donc revu la définition des horaires en ajoutant 1 (ce qui correspond à 24h) aux cellules qui comportent le signe ">".

Je te laisse le soin de vérifier si ça fonctionne comme tu le souhaites.

Cordialement.
 

Pièces jointes

Dernière édition:
Re : transfert d'un tableau pdf vers tableau excel exploitable

Désolé de ma réponse tardive,
Merci beaucoup, merci vivement!🙂
la macro correspond à ce que je voulais, je vais pouvoir compiler et traiter l'ensemble de mes données, c'est super

à bientôt
 
Dernière édition:
Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour,

et désolé, me revoilà avec de nouvelles interrogations!

Sur le fichier ci-joint (données transférées de pdf à excel), j'opère successivement les opérations suivantes:
1) je remplace les "," par des ":"
2) j'exécute la macro de Papou-net (ajoutant 24h aux horaires affectés du symbole ">")
3) je convertie mes cellules au format horaire hh:mm

Tout fonctionne sauf les cellules comportant des pointages d'heures fixes (exemples signalés en jaune les 29 janvier, 24 mars et 2 juin) qui deviennent 00:00

Mon fichier total comportant plus de 15000 lignes, je peux difficilement faire les corrections manuellement une par une, voyez-vous une solution?

Merci
 

Pièces jointes

Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour numero10000,

Tu pourras te vanter de m'avoir fait chercher 10000 solutions pour résoudre ton problème, mais je crois pouvoir affirmer y être parvenu.

Toutes les difficultés viennent des formats des données importées qui sont apparemment différents, notamment en ce qui concerne les dates (anglosaxonnes) et les cases jaunes. J'ai enfin trouvé la solution en exploitant la propriété Text des cellules au lieu de Value pour effectuer les conversions. J'ai également reformaté la colonne Z, dans laquelle il subsiste une erreur en ligne 123 car la cellule D n'est pas renseignée.

J'ai laissé la feuille d'origine intacte, tu pourras découvrir le résultat sur la feuille que j'ai ajoutée en copie.

Je pense avoir fait le tour de la question, mais comme je sature, je te laisse le soin de tester et vérifier à loisir.

Cordialement.
 

Pièces jointes

Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour à tous,

Juste pour mon information personnelle : quand tu as comme donnée 6.29, il s'agit de 6 h 29 ou 6 heures et 29/100 ème d'heure soit 06 h 17.

A+ à tous
 
Dernière édition:
Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour à tous,

Juste pour mon information personnelle : quand tu as comme donnée 6.29, il s'agit de 6 h 29 ou 6 heures et 29/60 ème d'heure soit 06 h 17.

A+ à tous

Bonsoir JC,

Effectivement, je me suis également posé la question mais j'ai omis de l'inclure dans mon message. Dans le doute, j'ai considéré que "6.29" équivaut à "6:29", ce qui simplifie quelque peu les conversions. Attendons la réponse de notre ami 10000.

Cordialement.
 
Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonsoir à tous,

je me débats avec mon fichier et vous remercie encore de votre aide si précieuse!

Merci notamment de m'avoir alerté sur le problème des cases de badgeage vides sur certaines lignes, je n'en connais pas l'origine mais j'ai passé mon fichier global au crible pour les supprimer (il y en avait plusieurs dizaines), je n'ai que des badgeages en nombre pair ce qui est logique.

La macro à l'air de fonctionner excepté encore un souci que je n'avais pas détecté, mais je dois encore le vérifier (pas ce soir, je jette l'éponge): j'ai vu qu'un badgeage de 8,10 était converti en 08:01 après exécution de la macro. Je ne comprends pas pourquoi, je n'ai pas identifié d'autres erreurs. 😕

Je suis confronté à un autre problème: j'ai dû passer l'ensemble de ma colonne de date au format date anglo-saxon par inadvertance et les dates sont lues au format anglo-saxon alors qu'elles sont au format français sur mon pdf d'origine.

Mes lignes demeurent cohérentes (en effet en lisant les dates comme s'il s'agissait d'un format français, les badgeages sont cohérents), mais pas moyen d'attribuer le format date français à la colonne sans modifier les dates:
- Excel interprète les dates qui peuvent avoir un sens dans le format anglo-saxon dans ce format (par exemple 12/10/2012 est identifié par Excel comme le 10 décembre 2012 alors qu'il s'agit du 12 octobre sur mon pdf d'origine),
- Excel ne reconnaît pas les autres dates (par exemple le 16/09/2012) et pas moyen d'affecter un format de date français.
Au pire je ferai une conversion manuelle sur les séries des 365 jours, je vais m'en sortir sans trop de difficultés je pense.

Pour votre question sur le format des badgeages, il s'agit bien de minutes et non de centièmes et il me semble que la macro est correcte sur ce point.
En tous cas je ne crois pas qu'une confusion sur le format des minutes soit à l'origine du problème évoqué plus haut du badgeage 8,1 transformé en 8:01 car mis à part ce cas qui paraît isolé, la macro traite correctement l'ensemble des autres badgeages.

Je reprends mes investigations demain et vous solliciterai peut-être à nouveau...

Merci encore 🙂
 
Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour numero10000, JC,

Le format des dates m'a effectivement posé bien des problèmes, mais il me semble résolu, du moins, dans l'état du fichier en ma possession. Il serait peut-être utile que tu remettes le fichier brut d'import pour vérifier.

Par ailleurs, j'ai remarqué une erreur qui m'avait échappé cette nuit : les cellules de la colonne R sont converties en heures, ce qui est absurde. Voici donc une version corrigée.

Je n'ai pas encore trouvé la parade en ce qui concerne la conversion de 8,1 en 8:01 mais je continue d'y regarder.

A +

Cordialement.
 

Pièces jointes

Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour à tous,

J'ai enfin résolu mon problème de format de date et j'ai pu exécuter la dernière macro (merci encore Papou-net) à l'ensemble de mon fichier.

Ci-joint un extrait avec 2 onglets (avant-après macro).

Il reste ce problème des badgeages qui n'ont qu'un chiffre après la virgule (quelques exemples en surbrillance jaune: 8,1 18,2 18,3... qui deviennent respectivement 8:01 18:02 18:03 alors qu'il s'agit de badgeages effectués à 8:10 18:20 18:30).
Si ce problème est trop compliqué à prendre en compte dans la macro, ne peut-on envisager une fonction de recherche de ces anomalies que je corrigerais alors manuellement?

D'une manière générale, grâce à mon tableau, je vais pouvoir calculer facilement les durées de travail quotidienne, hebdomadaire, mensuelle et annuelle ainsi que l'amplitude quotidienne.

S'agissant du temps de repos quotidien en revanche, je ne vois pas comment le déterminer.
Ce temps de repos doit être au minimum de 11h consécutives entre 2 journées de travail.
C'est la raison pour laquelle je vous interrogeais il y a quelques jours sur le format horaire portant également la date (non affichée dans la cellule).
Cela permettrait peut-être de déterminer le temps de repos entre 2 journées de travail en faisant simplement la soustraction 1er pointage de la journée - dernier pointage de la journée précédente.
Est-ce seulement envisageable?

Merci
 

Pièces jointes

Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonjour,

je suis désolé de vous solliciter de nouveau, j'abuse, je sais!! Au secours😕

Depuis plusieurs semaines je ne trouve pas de solution au dernier problème qui subsiste dans la macro de Papou-net en pièce jointe de mon précédent message.
Elle ne convertit pas correctement les badgeages qui n'ont qu'un chiffre en dixième (les dizaines de minutes) et pas de chiffre en centième (les unités de minute): pour ces badgeages, la macro décale le chiffre des dizaines de minutes vers les unités de minutes.
Quelques exemples en surbrillance jaune: 8,1 18,2 18,3... deviennent respectivement 8:01 18:02 18:03 alors qu'il s'agit de badgeages effectués à 8:10 18:20 18:30


Je ne vois que 2 options, mais toutes deux sont hors de portée de mes compétences:

- soit corriger la macro de Papou-net ,

- soit concevoir une autre macro à appliquer après la macro de Papou-net qui:
1) dans l'onglet contenant mon fichier avant application de la macro de Papou-net, identifierait toutes les cellules contenant des badgeages avec dixième et sans centième,
2) puis dans l'onglet après application de la macro de Papou-net, irait rechercher les cellules correspondant à chacune de ces occurences, pour déplacer le chiffre des unités de minutes vers les dizaines de minutes.
Par exemple, cette macro identifierait le badgeage C15 de l'onglet avant macro (8,1), et irait rechercher la cellule C15 de l'onglet après macro pour replacer le chiffre 1 dans les dizaines de minutes (8:10 au lieu de 8:01).

Merci de votre aide
 
Re : transfert d'un tableau pdf vers tableau excel exploitable

Bonsoir numero10000, JC,

Voici une proposition de modification de ma macro précédente :

Code:
Sub Convertir()
Dim j As Byte, Cel As Range, h, d
On Error Resume Next ' permet de continuer en cas d'erreur
' Désactive le rafraîchissement de l'écran (améliore la rapidité du programme)
Application.ScreenUpdating = False
' Formatage de la colonne Z
With Range("Z:Z")
  .NumberFormat = "[hh]:mm"
  .HorizontalAlignment = xlCenter
End With
' La boucle suivante parcourt les cellules non vides des colonnes C:Z
For Each Cel In Range("C2:Z" & Rows.Count).SpecialCells(xlCellTypeConstants)
  ' Si les cellules sont déjà au format date, les lignes de la condition ne sont pas effectuées
  ' ceci pour éviter des erreurs
  If Not Cel.NumberFormat = "hh:mm" And Cel.Column <> 18 Then
    t = Cel.Text
    t = Replace(t, ".", ":") ' remplace le point par un double point
    t = Replace(t, ",", ":") ' remplace la virgule par un double point
    p = InStr(t, ":")
    If Len(t) = p + 1 Then t = t & "0"
    If InStr(t, ":") = 0 Then t = t & ":00" ' s'il n'y a pas de double point en ajoute un suivi de 00
    If (Right(t, 1)) = ":" Then t = t & "00" ' si le dernier caractère est un double point ajoute 00
    If InStr(t, ">") > 0 Then ' si la cellule contient le caractère ">"
      j = 1 ' la variable "j" (jour) vaut 1
      t = Replace(t, ">", "") ' suppression du caractère ">"
      Else
      j = 0 ' sinon "j" vaut 0
    End If
    h = 1 / 24 * CInt(Left(t, InStr(t, ":") - 1)) ' convertit le texte au format heure
    m = 1 / 24 / 60 * CInt(Mid(t, InStr(t, ":") + 1)) ' convertit le texte au format heure
    d = CDate(Range("B" & Cel.Row).Value) ' affecte à la variable "d" la date de la cellule adjacente en B
    Cel.Value = d + h + m + j ' écrit la date et l'heure dans la cellule
    Cel.NumberFormat = "hh:mm" ' règle la cellule au format heure
  End If
Next
Application.ScreenUpdating = True
End Sub
Avec le fichier mis à jour.

A +

Cordialement.
 

Pièces jointes

- 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
11
Affichages
3 K
Retour