VBA//modifier format colonne
Résolu/Fermé
A voir également:
- VBA//modifier format colonne
- Format epub - Guide
- Modifier dns - Guide
- Déplacer une colonne excel - Guide
- Modifier liste déroulante excel - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
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é
MrQuant
Messages postés
45
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
3 septembre 2012
1
Modifié par MrQuant le 13/07/2011 à 11:30
Modifié par MrQuant le 13/07/2011 à 11:30
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
13 juil. 2011 à 12:37
13 juil. 2011 à 12:37
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
13 juil. 2011 à 12:38
13 juil. 2011 à 12:38
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
13 juil. 2011 à 12:39
13 juil. 2011 à 12:39
je répondrais quand le site ira mieux...
MrQuant
Messages postés
45
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
3 septembre 2012
1
13 juil. 2011 à 12:47
13 juil. 2011 à 12:47
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.
13 juil. 2011 à 10:15
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...
13 juil. 2011 à 10:39
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
13 juil. 2011 à 10:39
merci pour votre aide :)
13 juil. 2011 à 10:44
Pourquoi déclares-tu DateDemande et DebutRealisation As Range?
13 juil. 2011 à 10:53
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