VBA//modifier format colonne
Résolu
Bahia
-
Bahia -
Bahia -
Bonjour,
Suite à l'exportation du tableau sur lequel je travaille, les cellules des colonnes dates ne comportent plus que des "######". Le pb est que je dois faire une grosssse macro qui permettrait à mon boss de n'avoir à s'occuper de rien.
Comment automatiser le changement de format, qd ce morceau de code ne marche pas:
Sub Preparation()
Sheets("Depart").Activate
'Modifier automatiquement le format des colonnes donnant la date de demande d'intervention, et celle demandant la date de réalisation de celle-ci
Columns("L:L").Select
Selection.NumberFormat = "jj/mm/aaaa hh:mm:ss"
Columns("BR:BR").Select
Selection.NumberFormat = "jj/mm/aaaa hh:mm:ss"
End Sub
Suite à l'exportation du tableau sur lequel je travaille, les cellules des colonnes dates ne comportent plus que des "######". Le pb est que je dois faire une grosssse macro qui permettrait à mon boss de n'avoir à s'occuper de rien.
Comment automatiser le changement de format, qd ce morceau de code ne marche pas:
Sub Preparation()
Sheets("Depart").Activate
'Modifier automatiquement le format des colonnes donnant la date de demande d'intervention, et celle demandant la date de réalisation de celle-ci
Columns("L:L").Select
Selection.NumberFormat = "jj/mm/aaaa hh:mm:ss"
Columns("BR:BR").Select
Selection.NumberFormat = "jj/mm/aaaa hh:mm:ss"
End Sub
A voir également:
- VBA//modifier format colonne
- Format epub - Guide
- Modifier dns - Guide
- Format factory - Télécharger - Conversion & Codecs
- Déplacer colonne excel - Guide
- Modifier liste déroulante excel - Guide
3 réponses
autre précision: j'ai essayé de mettre "dd/mm/yyyy hh:mm:ss" plutôt que "JJ/mm/aaaa ..."
et ça n'a pas marché
et ça n'a pas marché
Salut,
Je ne comprend pas trop ce que tu cherche mais il me semble qu'en insérant
tu aura des colonnes avec des largeurs automatiques.
et tu vas sur ta feuille et sur la colonne date tu spécifie le format date approprié.
Cheers
Je ne comprend pas trop ce que tu cherche mais il me semble qu'en insérant
With Worksheets("TaFeuille") .Columns.AutoFit End With
tu aura des colonnes avec des largeurs automatiques.
et tu vas sur ta feuille et sur la colonne date tu spécifie le format date approprié.
Cheers
Merci à tous les deux pour votre aide.
Malheureusement, votre code Pikaju ne convient pas, j'ai des "00:00:00" qui apparaissent partout sur ma feuille de calcul, et sur le fichier que je vous ai montré, c'est pareil, sauf que j'ai des dates en plus qui ne veulent pas dire grd chose.
Et pour répondre à MrQuant, je dois créer une big macro pour mon boss, qu'il pourra utiliser sans passer par des calculs intermédiaires, tout ce qu'il veut c'est copié collé son tableau et obtenir directement le résultat, sans se préoccuper des détails
Malheureusement, votre code Pikaju ne convient pas, j'ai des "00:00:00" qui apparaissent partout sur ma feuille de calcul, et sur le fichier que je vous ai montré, c'est pareil, sauf que j'ai des dates en plus qui ne veulent pas dire grd chose.
Et pour répondre à MrQuant, je dois créer une big macro pour mon boss, qu'il pourra utiliser sans passer par des calculs intermédiaires, tout ce qu'il veut c'est copié collé son tableau et obtenir directement le résultat, sans se préoccuper des détails
Sur le classeur que tu nous as passé, les calculs de DateDiff sont exacts...
Si tu obtiens des 00:00:00 c'est surement un problème de formatage de cellule...
Ajoutons à cela un souci, certainement du à "FormulaLocal", et on a des résultats tout pourris!!!
Essaye ceci et dis moi :
Si tu obtiens des 00:00:00 c'est surement un problème de formatage de cellule...
Ajoutons à cela un souci, certainement du à "FormulaLocal", et on a des résultats tout pourris!!!
Essaye ceci et dis moi :
Sub Delai() Dim Lign As Long Dim DateDemande As Date, DebutRealisation As Date For Lign = 2 To Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row DateDemande = CDate(Range("A" & Lign).Value) DebutRealisation = CDate(Range("B" & Lign).Value) Range("C" & Lign).Value = Val(Format(DebutRealisation - DateDemande, "[h]")) Next Lign End Sub
Sur le classeur que tu nous as passé, les calculs de DateDiff sont exacts...
Si tu obtiens des 00:00:00 c'est surement un problème de formatage de cellule...
Ajoutons à cela un souci, certainement du à "FormulaLocal", et on a des résultats tout pourr*s!!!
Essaye ceci et dis moi :
Si tu obtiens des 00:00:00 c'est surement un problème de formatage de cellule...
Ajoutons à cela un souci, certainement du à "FormulaLocal", et on a des résultats tout pourr*s!!!
Essaye ceci et dis moi :
Sub Delai() Dim Lign As Long Dim DateDemande As Date, DebutRealisation As Date For Lign = 2 To Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row DateDemande = CDate(Range("A" & Lign).Value) DebutRealisation = CDate(Range("B" & Lign).Value) Range("C" & Lign).Value = Val(Format(DebutRealisation - DateDemande, "[h]")) Next Lign End Sub
Salut,
si ta Macro ne va servir qu'à formater une colonne date alors elle sera une perte de temps car tu peux le faire directement sur Excel en peu de temps.
Sinon tu peux activer l'enregistreur de macro et tu effectue la tache que tu souhaite et tu te base sur le code générée !
Sinon pour avoir des réponses précises il faut que u nous spécifie exactement ce que tu veux faire !
Cheers.
si ta Macro ne va servir qu'à formater une colonne date alors elle sera une perte de temps car tu peux le faire directement sur Excel en peu de temps.
Sinon tu peux activer l'enregistreur de macro et tu effectue la tache que tu souhaite et tu te base sur le code générée !
Sinon pour avoir des réponses précises il faut que u nous spécifie exactement ce que tu veux faire !
Cheers.
Je viens de tester sur des dates en Colonne L, la solution par :
fonctionne bien.
Si vous obtenez des #######, deux choix.
1- vous n'aviez pas des dates dans les cellules concernées
2- vos colonnes ne sont pas suffisamment larges. Essayez de les agrandir...
Mais du coup la suite de mon code bug un peu (en fait certaines lignes marchent et d'autres ne marche plus, mais plus important, il ne veut plus me calculer le délai :s)
Sub Preparation()
Sheets("Depart").Activate
'On commence par modifier la largeur des colonnes pour que la suite du code marche
Columns("A:FO").ColumnWidth = 20
'Création d'une colonne permettant de calculer le temps écoulé entre la date de demande d'intervention et la date de réalisation de l'intervention
'puis d'une colonne indiquant si l'intervention RER considérée a été réalisée dans les délais ou hors délai
'et enfin une dernière indiquant si l'intervention BER considérée a été réalisé dans les délai ou hors délai
Columns("AY:AY").Select
Range("AY1").Resize(, 3).EntireColumn.Insert Shift:=xlToRight
'On les nomme
Range("AY1").FormulaR1C1 = "Calcul du Délai"
Range("AZ1").FormulaR1C1 = "Respect du délai RER"
Range("BA1").FormulaR1C1 = "Respect du délai BER"
Dim i As Long
Dim DateDemande As Range
Dim DebutRealisation As Range
For i = 2 To Range("A65536").End(xlUp).Row
DateDemande = Range("L" & i).Value
DebutRealisation = Range("BS" & i).Value
Range("AY" & i).FormulaLocal = DateDiff("h", DateDemande, DebutRealisation, vbMonday, vbFirstJan1)
Next i
End Sub
merci pour votre aide :)
Pourquoi déclares-tu DateDemande et DebutRealisation As Range?
Lorsque je les définis comme des dates, ça ne plait pas au vbe (ce sont les variables qui récupère la date et l'heure de demande d'intervention, ou de réalisation de celle-ci)
J'ai pensé à utiliser Selection.Autofill Destination...
Mais je suis un peu perdu car mon pb reste le même: récupérer ce qu'il y a dans mes cellules