Excel 2013 VB Forcer une case en Majuscule
Résolu/Fermé
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
-
Modifié par pijaku le 28/08/2014 à 11:42
Lodhoss2 Messages postés 28 Date d'inscription mercredi 21 septembre 2011 Statut Membre Dernière intervention 9 octobre 2014 - 31 août 2014 à 19:37
Lodhoss2 Messages postés 28 Date d'inscription mercredi 21 septembre 2011 Statut Membre Dernière intervention 9 octobre 2014 - 31 août 2014 à 19:37
A voir également:
- Excel 2013 VB Forcer une case en Majuscule
- Word 2013 - Télécharger - Traitement de texte
- Excel 2013 - Télécharger - Tableur
- Forcer demarrage pc - Guide
- Forcer suppression fichier - Guide
- Liste déroulante excel - Guide
15 réponses
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
28 août 2014 à 11:34
28 août 2014 à 11:34
bonjour
essaye la fonction
UCase(text1)
cordialement
essaye la fonction
UCase(text1)
cordialement
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 759
Modifié par pijaku le 28/08/2014 à 11:43
Modifié par pijaku le 28/08/2014 à 11:43
Bonjour,
Remplacer la ligne :
EDIT : comme justement dit par Iama
Cordialement,
Franck
Remplacer la ligne :
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")Par :
Range("a1").Value = UCase(Application.Text(MyInput, "mmmm yyyy"))
EDIT : comme justement dit par Iama
Cordialement,
Franck
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
1
28 août 2014 à 16:58
28 août 2014 à 16:58
Bonjour,
J'ai remplacé la ligne par celle là :
Range("a1").Value = UCase(Application.Text(MyInput, "mmmm yyyy"))
Mais ça ne m'a pas mis le mois en majuscule mais ça ma rajouté un petit tiret entre le mois et l'année....
ex: J'avais "mai 2015" et maintenant j'ai "mai-2015".
Y a-t-il une correction a faire?
Pour la variable "Now", je ne pense pas l'utiliser car je ne cherche pas la date actuelle mais la macro me génére un calandrier du mois que je rentre au début dans une fenêtre, mais merci quand même pour les astuces! ^^
Merci pour votre aide!
J'ai remplacé la ligne par celle là :
Range("a1").Value = UCase(Application.Text(MyInput, "mmmm yyyy"))
Mais ça ne m'a pas mis le mois en majuscule mais ça ma rajouté un petit tiret entre le mois et l'année....
ex: J'avais "mai 2015" et maintenant j'ai "mai-2015".
Y a-t-il une correction a faire?
Pour la variable "Now", je ne pense pas l'utiliser car je ne cherche pas la date actuelle mais la macro me génére un calandrier du mois que je rentre au début dans une fenêtre, mais merci quand même pour les astuces! ^^
Merci pour votre aide!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
UCase(Application.Text(MyInput, "mmmm yyyy"))
Si MyInput = string "mai 2015"
mettre
UCase(MyInput)
A+
Maurice
UCase(Application.Text(MyInput, "mmmm yyyy"))
Si MyInput = string "mai 2015"
mettre
UCase(MyInput)
A+
Maurice
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
1
28 août 2014 à 18:13
28 août 2014 à 18:13
Encore merci pour votre réponse.
Maintenant ce n'est toujours pas en maj et ça me marque fevr-2015 par exemple. Le nom de mois n'apparaît pas en entier. Peut être que c'était pareille avant mais comme j'utilisais le mois de Mai comme test et que c'est plus court je ne l'avais pas vu...
Maintenant ce n'est toujours pas en maj et ça me marque fevr-2015 par exemple. Le nom de mois n'apparaît pas en entier. Peut être que c'était pareille avant mais comme j'utilisais le mois de Mai comme test et que c'est plus court je ne l'avais pas vu...
bonjour
Sub testDate()
' SI JE TAPE 10/04/2014
MyInput = InputBox("Type in Month and year for Calendar ")
Range("A1").Value = UCase(Format(MyInput, "mmmm yyyy"))
' et ca marche HI
End Sub
A+
Maurice
Sub testDate()
' SI JE TAPE 10/04/2014
MyInput = InputBox("Type in Month and year for Calendar ")
Range("A1").Value = UCase(Format(MyInput, "mmmm yyyy"))
' et ca marche HI
End Sub
A+
Maurice
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
1
28 août 2014 à 21:05
28 août 2014 à 21:05
Encore merci,
En effet si je créer une Macro avec juste ces 2 lignes je n'ai pas de problème, ça fonctionne, mais dans la macro complète , mêmes symptômes...
Je me suis donc dis que je ne le plaçait peut être pas bien... Je réecrit le code tel qu'il est avec les modifs, peut être vous verez une erreur?? Où peut être que c'est la suite qui remodifie la case car je me retrouve avec janv-2014 ...
Merci!
Sub CalendarMaker()
' Unprotect sheet if had previous calendar to prevent error.
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
Scenarios:=False
' Prevent screen flashing while drawing calendar.
Application.ScreenUpdating = False
' Set up error trapping.
On Error GoTo MyErrorTrap
' Clear area a1:g14 including any previous calendar.
Range("a1:g14").Clear
' Use InputBox to get desired month and year and set variable
' MyInput.
MyInput = InputBox("Type in Month and year for Calendar ")
' Allow user to end macro with Cancel in InputBox.
If MyInput = "" Then Exit Sub
' Get the date value of the beginning of inputted month.
StartDay = DateValue(MyInput)
' Check if valid date but not the first of the month
' -- if so, reset StartDay to first day of month.
If Day(StartDay) <> 1 Then
StartDay = DateValue(Month(StartDay) & "/1/" & _
Year(StartDay))
End If
' Prepare cell for Month and Year as fully spelled out.
''Range("a1").NumberFormat = "mmmm yyyy"
Range("A1").Value = UCase(Format(MyInput, "mmmm yyyy"))
' Center the Month and Year label across a1:g1 with appropriate
' size, height and bolding.
With Range("a1:g1")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.Font.Size = 18
.Font.Bold = True
.RowHeight = 35
End With
' Prepare a2:g2 for day of week labels with centering, size,
' height and bolding.
With Range("a2:g2")
.ColumnWidth = 11
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.Font.Size = 12
.Font.Bold = True
.RowHeight = 20
End With
' Put days of week in a2:g2.
Range("a2") = "Dimanche"
Range("b2") = "Lundi"
Range("c2") = "Mardi"
Range("d2") = "Mercredi"
Range("e2") = "Jeudi"
Range("f2") = "Vendredi"
Range("g2") = "Samedi"
' Prepare a3:g7 for dates with left/top alignment, size, height
' and bolding.
With Range("a3:g8")
.HorizontalAlignment = xlRight
.VerticalAlignment = xlTop
.Font.Size = 18
.Font.Bold = True
.RowHeight = 21
End With
' Put inputted month and year fully spelling out into "a1".
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
' Set variable and get which day of the week the month starts.
DayofWeek = Weekday(StartDay)
' Set variables to identify the year and month as separate
' variables.
CurYear = Year(StartDay)
CurMonth = Month(StartDay)
' Set variable and calculate the first day of the next month.
FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
' Place a "1" in cell position of the first day of the chosen
' month based on DayofWeek.
Select Case DayofWeek
Case 1
Range("a3").Value = 1
Case 2
Range("b3").Value = 1
Case 3
Range("c3").Value = 1
Case 4
Range("d3").Value = 1
Case 5
Range("e3").Value = 1
Case 6
Range("f3").Value = 1
Case 7
Range("g3").Value = 1
End Select
' Loop through range a3:g8 incrementing each cell after the "1"
' cell.
For Each cell In Range("a3:g8")
RowCell = cell.Row
ColCell = cell.Column
' Do if "1" is in first column.
If cell.Column = 1 And cell.Row = 3 Then
' Do if current cell is not in 1st column.
ElseIf cell.Column <> 1 Then
If cell.Offset(0, -1).Value >= 1 Then
cell.Value = cell.Offset(0, -1).Value + 1
' Stop when the last day of the month has been
' entered.
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
' Exit loop when calendar has correct number of
' days shown.
Exit For
End If
End If
' Do only if current cell is not in Row 3 and is in Column 1.
ElseIf cell.Row > 3 And cell.Column = 1 Then
cell.Value = cell.Offset(-1, 6).Value + 1
' Stop when the last day of the month has been entered.
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
' Exit loop when calendar has correct number of days
' shown.
Exit For
End If
End If
Next
' Create Entry cells, format them centered, wrap text, and border
' around days.
For x = 0 To 5
Range("A4").Offset(x * 2, 0).EntireRow.Insert
With Range("A4:G4").Offset(x * 2, 0)
.RowHeight = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = True
.Font.Size = 10
.Font.Bold = False
' Unlock these cells to be able to enter text later after
' sheet is protected.
.Locked = False
End With
' Put border around the block of dates.
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlLeft)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlRight)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
Weight:=xlThick, ColorIndex:=xlAutomatic
Next
If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
.Resize(2, 8).EntireRow.Delete
' Turn off gridlines.
ActiveWindow.DisplayGridlines = False
' Protect sheet to prevent overwriting the dates.
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
' Resize window to show all of calendar (may have to be adjusted
' for video configuration).
ActiveWindow.WindowState = xlMaximized
ActiveWindow.ScrollRow = 1
' Allow screen to redraw with calendar showing.
Application.ScreenUpdating = True
' Prevent going to error trap unless error found by exiting Sub
' here.
Exit Sub
' Error causes msgbox to indicate the problem, provides new input box,
' and resumes at the line that caused the error.
MyErrorTrap:
MsgBox "You may not have entered your Month and Year correctly." _
& Chr(13) & "Spell the Month correctly" _
& " (or use 3 letter abbreviation)" _
& Chr(13) & "and 4 digits for the Year"
MyInput = InputBox("Type in Month and year for Calendar")
If MyInput = "" Then Exit Sub
Resume
End Sub
En effet si je créer une Macro avec juste ces 2 lignes je n'ai pas de problème, ça fonctionne, mais dans la macro complète , mêmes symptômes...
Je me suis donc dis que je ne le plaçait peut être pas bien... Je réecrit le code tel qu'il est avec les modifs, peut être vous verez une erreur?? Où peut être que c'est la suite qui remodifie la case car je me retrouve avec janv-2014 ...
Merci!
Sub CalendarMaker()
' Unprotect sheet if had previous calendar to prevent error.
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
Scenarios:=False
' Prevent screen flashing while drawing calendar.
Application.ScreenUpdating = False
' Set up error trapping.
On Error GoTo MyErrorTrap
' Clear area a1:g14 including any previous calendar.
Range("a1:g14").Clear
' Use InputBox to get desired month and year and set variable
' MyInput.
MyInput = InputBox("Type in Month and year for Calendar ")
' Allow user to end macro with Cancel in InputBox.
If MyInput = "" Then Exit Sub
' Get the date value of the beginning of inputted month.
StartDay = DateValue(MyInput)
' Check if valid date but not the first of the month
' -- if so, reset StartDay to first day of month.
If Day(StartDay) <> 1 Then
StartDay = DateValue(Month(StartDay) & "/1/" & _
Year(StartDay))
End If
' Prepare cell for Month and Year as fully spelled out.
''Range("a1").NumberFormat = "mmmm yyyy"
Range("A1").Value = UCase(Format(MyInput, "mmmm yyyy"))
' Center the Month and Year label across a1:g1 with appropriate
' size, height and bolding.
With Range("a1:g1")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.Font.Size = 18
.Font.Bold = True
.RowHeight = 35
End With
' Prepare a2:g2 for day of week labels with centering, size,
' height and bolding.
With Range("a2:g2")
.ColumnWidth = 11
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.Font.Size = 12
.Font.Bold = True
.RowHeight = 20
End With
' Put days of week in a2:g2.
Range("a2") = "Dimanche"
Range("b2") = "Lundi"
Range("c2") = "Mardi"
Range("d2") = "Mercredi"
Range("e2") = "Jeudi"
Range("f2") = "Vendredi"
Range("g2") = "Samedi"
' Prepare a3:g7 for dates with left/top alignment, size, height
' and bolding.
With Range("a3:g8")
.HorizontalAlignment = xlRight
.VerticalAlignment = xlTop
.Font.Size = 18
.Font.Bold = True
.RowHeight = 21
End With
' Put inputted month and year fully spelling out into "a1".
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
' Set variable and get which day of the week the month starts.
DayofWeek = Weekday(StartDay)
' Set variables to identify the year and month as separate
' variables.
CurYear = Year(StartDay)
CurMonth = Month(StartDay)
' Set variable and calculate the first day of the next month.
FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
' Place a "1" in cell position of the first day of the chosen
' month based on DayofWeek.
Select Case DayofWeek
Case 1
Range("a3").Value = 1
Case 2
Range("b3").Value = 1
Case 3
Range("c3").Value = 1
Case 4
Range("d3").Value = 1
Case 5
Range("e3").Value = 1
Case 6
Range("f3").Value = 1
Case 7
Range("g3").Value = 1
End Select
' Loop through range a3:g8 incrementing each cell after the "1"
' cell.
For Each cell In Range("a3:g8")
RowCell = cell.Row
ColCell = cell.Column
' Do if "1" is in first column.
If cell.Column = 1 And cell.Row = 3 Then
' Do if current cell is not in 1st column.
ElseIf cell.Column <> 1 Then
If cell.Offset(0, -1).Value >= 1 Then
cell.Value = cell.Offset(0, -1).Value + 1
' Stop when the last day of the month has been
' entered.
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
' Exit loop when calendar has correct number of
' days shown.
Exit For
End If
End If
' Do only if current cell is not in Row 3 and is in Column 1.
ElseIf cell.Row > 3 And cell.Column = 1 Then
cell.Value = cell.Offset(-1, 6).Value + 1
' Stop when the last day of the month has been entered.
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
' Exit loop when calendar has correct number of days
' shown.
Exit For
End If
End If
Next
' Create Entry cells, format them centered, wrap text, and border
' around days.
For x = 0 To 5
Range("A4").Offset(x * 2, 0).EntireRow.Insert
With Range("A4:G4").Offset(x * 2, 0)
.RowHeight = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = True
.Font.Size = 10
.Font.Bold = False
' Unlock these cells to be able to enter text later after
' sheet is protected.
.Locked = False
End With
' Put border around the block of dates.
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlLeft)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlRight)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
Weight:=xlThick, ColorIndex:=xlAutomatic
Next
If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
.Resize(2, 8).EntireRow.Delete
' Turn off gridlines.
ActiveWindow.DisplayGridlines = False
' Protect sheet to prevent overwriting the dates.
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
' Resize window to show all of calendar (may have to be adjusted
' for video configuration).
ActiveWindow.WindowState = xlMaximized
ActiveWindow.ScrollRow = 1
' Allow screen to redraw with calendar showing.
Application.ScreenUpdating = True
' Prevent going to error trap unless error found by exiting Sub
' here.
Exit Sub
' Error causes msgbox to indicate the problem, provides new input box,
' and resumes at the line that caused the error.
MyErrorTrap:
MsgBox "You may not have entered your Month and Year correctly." _
& Chr(13) & "Spell the Month correctly" _
& " (or use 3 letter abbreviation)" _
& Chr(13) & "and 4 digits for the Year"
MyInput = InputBox("Type in Month and year for Calendar")
If MyInput = "" Then Exit Sub
Resume
End Sub
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
Modifié par Iama le 28/08/2014 à 21:27
Modifié par Iama le 28/08/2014 à 21:27
Bonjour
Je viens de rentré, j'ai regarder ton code.
Il marche, mais
Au début en ligne 29, tu as:
Plus loin en ligne 69 tu as:
donc tu réécrit en minuscule.
J'ai utilise le pas à pas (F8), c'est pratique, et cela peut faire gagner tu temps
cordialement
Je viens de rentré, j'ai regarder ton code.
Il marche, mais
Au début en ligne 29, tu as:
Range("A1").Value = UCase(Format(MyInput, "mmmm yyyy"))Tu écrit bien en majuscule.
Plus loin en ligne 69 tu as:
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
donc tu réécrit en minuscule.
J'ai utilise le pas à pas (F8), c'est pratique, et cela peut faire gagner tu temps
cordialement
bonjour
' Put inputted month and year fully spelling out into "a1".
' Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
' Set variable and get which day of the week the month starts.
tu peux enlever le range car doublon HI
A+
Maurice
' Put inputted month and year fully spelling out into "a1".
' Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
' Set variable and get which day of the week the month starts.
tu peux enlever le range car doublon HI
A+
Maurice
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
28 août 2014 à 21:36
28 août 2014 à 21:36
Bonsoir Maurice
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
28 août 2014 à 22:02
28 août 2014 à 22:02
Bonjour,
Supprime cette ligne (une dizaine de lignes après les jours semaine) :
Supprime cette ligne (une dizaine de lignes après les jours semaine) :
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")et cela devrait fonctionner.
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
1
29 août 2014 à 09:33
29 août 2014 à 09:33
Bonjour à tous!
Merci pour vos réponses, effectivement j'ai supprimé la seconde ligne similaire et tout fonctionne!
Merci encore a tous!
Merci pour vos réponses, effectivement j'ai supprimé la seconde ligne similaire et tout fonctionne!
Merci encore a tous!
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
1
31 août 2014 à 18:20
31 août 2014 à 18:20
Re Bonjour à tous,
Je ré-ouvre mon sujet car j'ai un nouveau problème concernant cette même case...
J'ai ouvert mon tableur sur un pc qui est dans une autre langue et la variable du mois sort dans la langue du PC ou de l'office je ne sais pas, mais j'aimerais la forcer en Français... Est-ce possible?
Merci d'avance!
Je ré-ouvre mon sujet car j'ai un nouveau problème concernant cette même case...
J'ai ouvert mon tableur sur un pc qui est dans une autre langue et la variable du mois sort dans la langue du PC ou de l'office je ne sais pas, mais j'aimerais la forcer en Français... Est-ce possible?
Merci d'avance!
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
31 août 2014 à 19:10
31 août 2014 à 19:10
Bonjour,
Ta macro utilise le nom des mois selon les paramètres régionaux du PC et cela parait assez normal que si tu fonctionnes sous une autre langue ce soit celle-ci qui est affichée : il me semble que le contraire serait considéré comme un bug, non ?
Ta macro utilise le nom des mois selon les paramètres régionaux du PC et cela parait assez normal que si tu fonctionnes sous une autre langue ce soit celle-ci qui est affichée : il me semble que le contraire serait considéré comme un bug, non ?
Lodhoss2
Messages postés
28
Date d'inscription
mercredi 21 septembre 2011
Statut
Membre
Dernière intervention
9 octobre 2014
1
31 août 2014 à 19:37
31 août 2014 à 19:37
Pas faut... donc pas vraiment de solution... Tempi je le changerais à la main ^^!
Merci quand même!
Merci quand même!