Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
Salut à toi
Je remplacerais ces lignes :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Par ces lignes :
With Application.FindFormat.NumberFormat
Cells.NumberFormat = "h:mm"
End With
With Application.ReplaceFormat.NumberFormat
Cells.NumberFormat = "[hh]:mm"
End With
Celà devrait mieux faire
Dis moi !!!!!
Salut à toi
Je remplacerais ces lignes :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Par ces lignes :
With Application.FindFormat.NumberFormat
Cells.NumberFormat = "h:mm"
End With
With Application.ReplaceFormat.NumberFormat
Cells.NumberFormat = "[hh]:mm"
End With
Celà devrait mieux faire
Dis moi !!!!!
Salut à toi
Je remplacerais ces lignes :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Par ces lignes :
With Application.FindFormat.NumberFormat
Cells.NumberFormat = "h:mm"
End With
With Application.ReplaceFormat.NumberFormat
Cells.NumberFormat = "[hh]:mm"
End With
Celà devrait mieux faire
Dis moi !!!!!
Bonjour,
Je te propose d'utiliser plutôt ce genre de code (l'application d'un
format personnalisé ne pose aucun problème s'il est fait cellule par
cellule) :
'============= > Sub RemplaceFormat()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case cell.NumberFormat
Case "h:mm", "h:mm;@", "[h]:mm:ss", "[h]:mm:ss;@"
cell.NumberFormat = "[hh]:mm"
Case Else
End Select
Next cell
End Sub
'============= >
Ça n'agit que sur la feuille active (mais ça peut s'adapter).
En espérant que tu n'aies pas un trop grand nombre de cellules à passer
dans la moulinette :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Lincé a écrit :
> Bonjour,
> J'ai créé une macro pour mettre en page des extractions que je récupère dans
> excel.
> Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
> au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
> espaces en début de cellule et excel ne reconnait plus le format nombre dans
> mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
> blancs. Excel reconnait donc le format horaire, mais pour les heures
> en-dessous de 24:00 le format est h:mm
> alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
> je voudrais qu'il me remplace toutes les cellules avec ses formats par un
> format unique [hh]:mm
> J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
> excel et voilà le code que j'obtiens en VBA :
>
> Application.FindFormat.NumberFormat = "h:mm"
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
> Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
> xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
> Application.FindFormat.NumberFormat = "[h]:mm:ss"
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
> Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
> xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
>
> Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
> une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
> lignes suivantes :
>
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
>
> Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
> mais refuse de remplacer les formats par "[hh]:mm"
>
> Ce sont les crochets qui le dérangent apparemment !
> Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
>
> Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
> si je la sors pour la mettre dans une autre, ou même si je la copie
> entièrement dans une autre feuille excel, il lance la procédure de débogage !
> Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
> pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
> retrouver.
> Merci d'avance pour votre aide
> Lincé
.
Bonjour,
Je te propose d'utiliser plutôt ce genre de code (l'application d'un
format personnalisé ne pose aucun problème s'il est fait cellule par
cellule) :
'============= > Sub RemplaceFormat()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case cell.NumberFormat
Case "h:mm", "h:mm;@", "[h]:mm:ss", "[h]:mm:ss;@"
cell.NumberFormat = "[hh]:mm"
Case Else
End Select
Next cell
End Sub
'============= >
Ça n'agit que sur la feuille active (mais ça peut s'adapter).
En espérant que tu n'aies pas un trop grand nombre de cellules à passer
dans la moulinette :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Lincé a écrit :
> Bonjour,
> J'ai créé une macro pour mettre en page des extractions que je récupère dans
> excel.
> Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
> au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
> espaces en début de cellule et excel ne reconnait plus le format nombre dans
> mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
> blancs. Excel reconnait donc le format horaire, mais pour les heures
> en-dessous de 24:00 le format est h:mm
> alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
> je voudrais qu'il me remplace toutes les cellules avec ses formats par un
> format unique [hh]:mm
> J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
> excel et voilà le code que j'obtiens en VBA :
>
> Application.FindFormat.NumberFormat = "h:mm"
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
> Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
> xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
> Application.FindFormat.NumberFormat = "[h]:mm:ss"
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
> Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
> xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
>
> Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
> une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
> lignes suivantes :
>
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
>
> Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
> mais refuse de remplacer les formats par "[hh]:mm"
>
> Ce sont les crochets qui le dérangent apparemment !
> Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
>
> Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
> si je la sors pour la mettre dans une autre, ou même si je la copie
> entièrement dans une autre feuille excel, il lance la procédure de débogage !
> Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
> pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
> retrouver.
> Merci d'avance pour votre aide
> Lincé
.
Bonjour,
Je te propose d'utiliser plutôt ce genre de code (l'application d'un
format personnalisé ne pose aucun problème s'il est fait cellule par
cellule) :
'============= > Sub RemplaceFormat()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case cell.NumberFormat
Case "h:mm", "h:mm;@", "[h]:mm:ss", "[h]:mm:ss;@"
cell.NumberFormat = "[hh]:mm"
Case Else
End Select
Next cell
End Sub
'============= >
Ça n'agit que sur la feuille active (mais ça peut s'adapter).
En espérant que tu n'aies pas un trop grand nombre de cellules à passer
dans la moulinette :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Lincé a écrit :
> Bonjour,
> J'ai créé une macro pour mettre en page des extractions que je récupère dans
> excel.
> Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
> au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
> espaces en début de cellule et excel ne reconnait plus le format nombre dans
> mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
> blancs. Excel reconnait donc le format horaire, mais pour les heures
> en-dessous de 24:00 le format est h:mm
> alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
> je voudrais qu'il me remplace toutes les cellules avec ses formats par un
> format unique [hh]:mm
> J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
> excel et voilà le code que j'obtiens en VBA :
>
> Application.FindFormat.NumberFormat = "h:mm"
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
> Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
> xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
> Application.FindFormat.NumberFormat = "[h]:mm:ss"
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
> Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
> xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
>
> Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
> une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
> lignes suivantes :
>
> Application.ReplaceFormat.NumberFormat = "[hh]:mm"
>
> Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
> mais refuse de remplacer les formats par "[hh]:mm"
>
> Ce sont les crochets qui le dérangent apparemment !
> Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
>
> Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
> si je la sors pour la mettre dans une autre, ou même si je la copie
> entièrement dans une autre feuille excel, il lance la procédure de débogage !
> Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
> pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
> retrouver.
> Merci d'avance pour votre aide
> Lincé
.
Bonjour,
Voici 2 exemples comment utiliser la méthode FindFormat.
Méthode I : Modifier un format de cellule
'---------------------------------------
Sub test()
With Application.FindFormat
.Clear
.NumberFormat = "[hh]:mm:ss"
End With
With Application.ReplaceFormat
.NumberFormat = "[hh]:mm"
End With
'Tu adaptes la plage et le nom de la feuille
With Worksheets("Feuil1").Range("A1:A10")
.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True
End With
End Sub
'---------------------------------------
Méthode II : modifie le format et il est possible d'effectuer
une autre intervention sur chacune des cellules
dont on modifie le format.
'----------------------------------------
Sub TrouverFormat()
Dim Rg As Range
Dim LeCellFormat As CellFormat
Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.NumberFormat = "[hh]:mm:ss"
'La liste pourrait être plus longue ...
End With
'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1")
Set Rg = .Range("A:A")
End With
'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
On Error Resume Next
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
'Si tu veux modifier le format de la cellule ....
C.NumberFormat = "[hh]:mm"
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With
End Sub
'----------------------------------------
"Lincé" a écrit dans le message de groupe de discussion :
Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
Bonjour,
Voici 2 exemples comment utiliser la méthode FindFormat.
Méthode I : Modifier un format de cellule
'---------------------------------------
Sub test()
With Application.FindFormat
.Clear
.NumberFormat = "[hh]:mm:ss"
End With
With Application.ReplaceFormat
.NumberFormat = "[hh]:mm"
End With
'Tu adaptes la plage et le nom de la feuille
With Worksheets("Feuil1").Range("A1:A10")
.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True
End With
End Sub
'---------------------------------------
Méthode II : modifie le format et il est possible d'effectuer
une autre intervention sur chacune des cellules
dont on modifie le format.
'----------------------------------------
Sub TrouverFormat()
Dim Rg As Range
Dim LeCellFormat As CellFormat
Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.NumberFormat = "[hh]:mm:ss"
'La liste pourrait être plus longue ...
End With
'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1")
Set Rg = .Range("A:A")
End With
'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
On Error Resume Next
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
'Si tu veux modifier le format de la cellule ....
C.NumberFormat = "[hh]:mm"
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With
End Sub
'----------------------------------------
"Lincé" <Linc@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
2CFFB813-8C06-422B-AF65-3C4D873BF66C@microsoft.com...
Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
Bonjour,
Voici 2 exemples comment utiliser la méthode FindFormat.
Méthode I : Modifier un format de cellule
'---------------------------------------
Sub test()
With Application.FindFormat
.Clear
.NumberFormat = "[hh]:mm:ss"
End With
With Application.ReplaceFormat
.NumberFormat = "[hh]:mm"
End With
'Tu adaptes la plage et le nom de la feuille
With Worksheets("Feuil1").Range("A1:A10")
.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True
End With
End Sub
'---------------------------------------
Méthode II : modifie le format et il est possible d'effectuer
une autre intervention sur chacune des cellules
dont on modifie le format.
'----------------------------------------
Sub TrouverFormat()
Dim Rg As Range
Dim LeCellFormat As CellFormat
Set LeCellFormat = Application.FindFormat
'Détermine les caractéristiques
'du format de cellule recherché.
With LeCellFormat
.Clear 'S'assurer d'effacer les critères
'des anciennes recherches
.NumberFormat = "[hh]:mm:ss"
'La liste pourrait être plus longue ...
End With
'Détermine la plage de cellules où s'effectue
'la recherche
With Worksheets("Feuil1")
Set Rg = .Range("A:A")
End With
'Trouve la cellule ayant le bon format pour
'y effectuer une ou des opérations quelconques...
On Error Resume Next
With Rg
Set C = .Find(What:="", SearchFormat:=True)
If Not C Is Nothing Then
adr = C.Address
Do
'Le code que tu veux exécuter avec la cellule trouvée
'Si tu veux modifier le format de la cellule ....
C.NumberFormat = "[hh]:mm"
'pour passer à la cellule suivante ...
Set C = .Find(What:="", after:¬tiveCell, SearchFormat:=True)
Loop Until C.Address = adr
End If
End With
End Sub
'----------------------------------------
"Lincé" a écrit dans le message de groupe de discussion :
Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
Bonjour et merci de m'avoir répondu.
J'ai utilisé le code proposé par FFO et ça marche pour moi.
Je testerai quand même le tien ! histoire d'essayer de comprendre le
fonctionnement des macros.
Bonne journée
"FS" a écrit :Bonjour,
Je te propose d'utiliser plutôt ce genre de code (l'application d'un
format personnalisé ne pose aucun problème s'il est fait cellule par
cellule) :
'============= >> Sub RemplaceFormat()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case cell.NumberFormat
Case "h:mm", "h:mm;@", "[h]:mm:ss", "[h]:mm:ss;@"
cell.NumberFormat = "[hh]:mm"
Case Else
End Select
Next cell
End Sub
'============= >>
Ça n'agit que sur la feuille active (mais ça peut s'adapter).
En espérant que tu n'aies pas un trop grand nombre de cellules à passer
dans la moulinette :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr/
Lincé a écrit :Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
.
Bonjour et merci de m'avoir répondu.
J'ai utilisé le code proposé par FFO et ça marche pour moi.
Je testerai quand même le tien ! histoire d'essayer de comprendre le
fonctionnement des macros.
Bonne journée
"FS" a écrit :
Bonjour,
Je te propose d'utiliser plutôt ce genre de code (l'application d'un
format personnalisé ne pose aucun problème s'il est fait cellule par
cellule) :
'============= >> Sub RemplaceFormat()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case cell.NumberFormat
Case "h:mm", "h:mm;@", "[h]:mm:ss", "[h]:mm:ss;@"
cell.NumberFormat = "[hh]:mm"
Case Else
End Select
Next cell
End Sub
'============= >>
Ça n'agit que sur la feuille active (mais ça peut s'adapter).
En espérant que tu n'aies pas un trop grand nombre de cellules à passer
dans la moulinette :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Lincé a écrit :
Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
.
Bonjour et merci de m'avoir répondu.
J'ai utilisé le code proposé par FFO et ça marche pour moi.
Je testerai quand même le tien ! histoire d'essayer de comprendre le
fonctionnement des macros.
Bonne journée
"FS" a écrit :Bonjour,
Je te propose d'utiliser plutôt ce genre de code (l'application d'un
format personnalisé ne pose aucun problème s'il est fait cellule par
cellule) :
'============= >> Sub RemplaceFormat()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Select Case cell.NumberFormat
Case "h:mm", "h:mm;@", "[h]:mm:ss", "[h]:mm:ss;@"
cell.NumberFormat = "[hh]:mm"
Case Else
End Select
Next cell
End Sub
'============= >>
Ça n'agit que sur la feuille active (mais ça peut s'adapter).
En espérant que tu n'aies pas un trop grand nombre de cellules à passer
dans la moulinette :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr/
Lincé a écrit :Bonjour,
J'ai créé une macro pour mettre en page des extractions que je récupère dans
excel.
Jusque là tout va bien. Certaines cellules contiennent des heures cumulées
au-delà de 24h mais lorsque je récupère le fichier dans excel, il y a des
espaces en début de cellule et excel ne reconnait plus le format nombre dans
mes cellules. J'ai donc ajouté dans ma macro une partie qui supprime ses
blancs. Excel reconnait donc le format horaire, mais pour les heures
en-dessous de 24:00 le format est h:mm
alors que pour les heures cumulées au-delà de 24:00 le format est [hh]:mm:ss
je voudrais qu'il me remplace toutes les cellules avec ses formats par un
format unique [hh]:mm
J'ai donc enregistré une macro en faisant l'action rechercher/remplacer dans
excel et voilà le code que j'obtiens en VBA :
Application.FindFormat.NumberFormat = "h:mm"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Application.FindFormat.NumberFormat = "[h]:mm:ss"
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Cells.Replace What:="", Replacement:="", LookAt:=xlWhole, SearchOrder:= _
xlByColumns, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
Lorsque j'insère ce code dans ma macro globale de mise en page (ou même dans
une macro avec ce code seul, j'ai testé pour voir) VBA me bloque la macro aux
lignes suivantes :
Application.ReplaceFormat.NumberFormat = "[hh]:mm"
Donc en fait il veut bien rechercher les cellules au format "[hh]:mm:ss"
mais refuse de remplacer les formats par "[hh]:mm"
Ce sont les crochets qui le dérangent apparemment !
Sauf que si j'ote les crochets, je n'obtiens plus le cumul au-delà de 24:00 !
Là j'en perds mon latin car il créé lui-même la macro de cette façon, mais
si je la sors pour la mettre dans une autre, ou même si je la copie
entièrement dans une autre feuille excel, il lance la procédure de débogage !
Quelqu'un pourrait-il m'aider ? J'ai l'impression qu'il ne s'agit que d'un
pb d'écriture, mais je ne suis pas une pro des macros alors j'ai du mal à m'y
retrouver.
Merci d'avance pour votre aide
Lincé
.