Je bloque sur la fin de ma macro

romualdlecordier

XLDnaute Occasionnel
Bonjour

J'ai un fichier qui lorsque je clique sur mon bouton macro fonctionne bien mais ...

Mon souci est de savoir comment par la macro je peux passer toutes les donnees des colonnes 4 à 23 de minutes en centieme

Merci de votre aide

Romuald
 

Pièces jointes

  • Macro Badgeuse .xls
    56.5 KB · Affichages: 46

eriiic

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Bonsoir,

en centièmes de quoi ?

Le principe (références au format A1 et non L1C1) :
Code:
For Each c In Range("D1", Cells([D65536].End(xlUp).Row, 23))
           If c <> 0 Then c.Value = c / 100
    Next c
mettre le calcul qui va bien à la place de c/100...

eric

edit: je m'étais basé sur le résultat de ta macro sans la regarder, avec donc que des nombres décimaux sur une quinzaines de lignes.
Les posts suivants me l'ont fait regarder, effectivement fait une conversion correcte pour les heures, pas un simple remplacement de h par . , avant ou après ton nettoyage
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Bonjour romualdlecordier, eriiiic, Bruno, le forum,

Voyez le fichier joint avec cette macro :

Code:
Sub DatesHeures()
Application.ScreenUpdating = False
[D:D].Replace "/", "/" 'dates nombres
[E:T].Replace "     ", "", LookAt:=xlPart
[E:T].Replace "    ", ""
[E:T].Replace "   ", ""
[E:T].Replace "h", ":" 'heures nombres
[IV1] = 24
[IV1].Copy
[E:T].SpecialCells(xlCellTypeConstants, 1).PasteSpecial _
  xlPasteValues, xlPasteSpecialOperationMultiply
[IV1] = ""
[E:T].NumberFormat = "0.00"
[D:T].HorizontalAlignment = xlCenter 'centrage
[J:J,R:T].Replace ":", "h"
[O:Q].Replace ":", "H"
[A1].Select
End Sub
Remarques :

1) Toutes les opérations de cette macro sont faciles à réaliser manuellement.

2) Pas touché à la macro Nettoyage, à mon avis elle ne va pas bien et doit être revue.

A+
 

Pièces jointes

  • Macro Badgeuse(1).xls
    76.5 KB · Affichages: 31

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Re,

La macro précédente donnait les heures décimales (centièmes) comme vous le demandiez.

Maintenant comme dit Bruno il vaut peut-être mieux des heures au standard Excel.

La macro est plus simple :

Code:
Sub DatesHeures()
[D:D].Replace "/", "/" 'dates nombres
[E:T].Replace "     ", "", LookAt:=xlPart
[E:T].Replace "    ", ""
[E:T].Replace "   ", ""
[E:T].Replace "h", ":" 'heures nombres
[E:T].NumberFormat = "[h]:mm"
[D:T].HorizontalAlignment = xlCenter 'centrage
[J:J,R:T].SpecialCells(xlCellTypeConstants, 2).Replace ":", "h"
[O:Q].SpecialCells(xlCellTypeConstants, 2).Replace ":", "H"
End Sub
Fichier joint.

Quelle solution voulez-vous adopter finalement ?

A+
 

Pièces jointes

  • Macro Badgeuse heure standard(1).xls
    77 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Re,

Voici une nouvelle version avec les modifications suivantes :

1) Avec les macros des posts #4 et #5 les dates restaient du texte. Il faut faire une boucle :

Code:
For Each cel In [D:D].SpecialCells(xlCellTypeConstants, 2)
  If IsDate(cel) Then cel = CDate(cel) 'convertit en date
Next
2) J'ai remplacé votre macro Nettoyage par celle-ci :

Code:
Sub Liste()
Dim a As Range
Call DatesHeures
With Sheets("Liste")
  .Cells.Clear
  [D:D].SpecialCells(xlCellTypeConstants, 1).EntireRow.Copy .[A1]
  .[A:A].Delete
  'complète les colonnes A et B
  For Each a In .[A:A].SpecialCells(xlCellTypeBlanks).Areas
    a = a(0)
    a.Offset(, 1) = a(0).Offset(, 1)
  Next
  .Activate
End With
' Sauvegarde des données au format CSV
With ThisWorkbook
  .SaveCopyAs .Path & "\" & Left(.Name, InStrRev(.Name, ".")) & "csv"
End With
End Sub
La liste est créée dans la feuille Liste.

Fichier (2).

A+
 

Pièces jointes

  • Macro Badgeuse heure standard(2).xls
    78 KB · Affichages: 38
Dernière édition:

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Re,

Pour la sauvegarde il est peut-être préférable de créer un nouveau document avec une seule feuille :

Code:
' Sauvegarde des données au format CSV
n = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Set wb = Workbooks.Add 'nouveau document
Application.SheetsInNewWorkbook = n
With ThisWorkbook
  .Sheets("Liste").Copy Before:=wb.Sheets(1)
  Application.DisplayAlerts = False
  wb.Sheets(2).Delete
  wb.SaveAs .Path & "\" & Left(.Name, InStrRev(.Name, ".")) & "csv"
End With
wb.Close
Fichier (3).

A+
 

Pièces jointes

  • Macro Badgeuse heure standard(3).xls
    77 KB · Affichages: 30
Dernière édition:

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Re encore,

On pouvait se rendre compte facilement que les cellules "vides" des tableaux contiennent en fait le texte vide "".

J'ai édité les fichiers (2) et (3) en effacant les textes vides :

Code:
'efface les textes vides ""
Cells.Replace "", "###", LookAt:=xlWhole
Cells.Replace "###", ""
A+
 

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Re,

Attention.

Si l'on veut que le fichier csv soit créé avec FileFormat:=xlCSVMSDOS, il faut reconvertir les dates en texte dans la feuille Liste, sinon il y aura inversion des jours et des mois.

Je découvre en passant que dans le fichier csv les é sont convertis en virgule :p

[Edit] Ce n'est pas gênant car cette virgule a le code 130 alors que le séparateur virgule a le code 44.

Fichier (5) + fichier csv.

A+
 

Pièces jointes

  • Macro Badgeuse heure standard(5).zip
    25.3 KB · Affichages: 19
Dernière édition:

job75

XLDnaute Barbatruc
Re : Je bloque sur la fin de ma macro

Bonjour romualdlecordier, le forum,

Je continue à rouler tout seul :cool:

Si dans tout ça le seul but est de créer un fichier csv, voici une solution mieux adaptée.

On notera le code de la sauvegarde :

Code:
' Sauvegarde au format CSV
Application.DisplayAlerts = False
On Error Resume Next
With ThisWorkbook
  nf = Left(.Name, InStrRev(.Name, ".")) & "csv"
  Workbooks(nf).Close 'si le fichier csv est ouvert
  .SaveAs .Path & "\" & nf, FileFormat:=xlCSVMSDOS
  If Workbooks.Count = 1 Then Application.Quit Else .Close
End With
Fichier (6).

A+
 

Pièces jointes

  • Macro Badgeuse heure standard(6).xls
    71.5 KB · Affichages: 35

Discussions similaires

Réponses
4
Affichages
237
Réponses
40
Affichages
1 K

Statistiques des forums

Discussions
312 559
Messages
2 089 602
Membres
104 224
dernier inscrit
Brilma