Macro- insertion de date
Bonsoir le forum, alors voili voilou, je soumet une demande que je ne sais comment réaliser!
Je voudrais que la macro lorsque l'on clique sur le bouton associé fasse ce qui suit:
_ affiche une fenêtre demandant à l'utilisateur de sélectionner une plage de donnée
_ fasse une mise en forme de cette plage (bordure et trame)
_demande ensuite à l'utilisateur de rentrer une date
_puis fasse (suite à cela) une fusion de cellules, d'une colonne en particulier et y insère cette date
Dans le cas présent avec le fichier joint il faudrait que cette fusion et insertion de date se fasse en colonne L.
J'espère avoir été compréhensible!
Bonjour,
Je constate que tu sais te servir de l'éditeur de macro.
Pour ta 1ère question, intéresse-toi à Application.InputBox avec le paramètre 8
Tape quelque par >> Application.InputBox double-clic sur InputBox et tape F1.
Ont verras ensuite.
A+
oui oui je sais m'en servir, c'est d'ailleurs de cette manière que j'appliquais mes bordures et trames!
j'ai réussi avec tes quelques indications. le début du code n'étant pas le plus problématique.
maintenant il me faut résoudre le problème suivant, je n'arrive pas a trouver de quelle manière je peux sélectionner la colonne L de ma plage. Ceci afin d'y intégrer la fonction fusionner et centrer et d'y inserer la date.
Sub selectplage_insertdate()
Dim Plage As Range
Set Plage = Application.InputBox("Sélectionnez une plage de cellule a mettre en forme", _
"selection des donnees", , , , "C:\dossier\FichierAide.hlp", 100, Type:=8)
'code bordure et trame
Plage.Borders(xlDiagonalDown).LineStyle = xlNone
Plage.Borders(xlDiagonalUp).LineStyle = xlNone
With Plage.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ThemeColor = 2
.TintAndShade = 4.99893185216834E-02
.Weight = xlThick
End With
With Plage.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ThemeColor = 2
.TintAndShade = 4.99893185216834E-02
.Weight = xlThick
End With
With Plage.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ThemeColor = 2
.TintAndShade = 4.99893185216834E-02
.Weight = xlThick
End With
With Plage.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ThemeColor = 2
.TintAndShade = 4.99893185216834E-02
.Weight = xlThick
End With
'code bordure et trame
'11eme Colone (L) de la plage
With Columns("L:L")
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
End SubCeci dit, pour la date j'ai aussi trouvé comment faire
il faut pareil que je trouve comment la mettre dans ma colonne L fusionnée
Sub testinputdate()
Range("B5").Value = CDate(InputBox("Ecrire la date au format jj/mm/aa puis cliquer sur OK", "DATE"))
End SubRe,
Pas claire ta question, si je lis entre les lignes, si l'utilisateur sélectionne, par exemple la plage G10:M30 tu veux fusionner la colonne L de 10 à 30 et y mettre une date ?
Si oui... retrouver l'adresse de la colonne L comprise dans la plage ! ?
Range("L" & plage.Row & ":L" & plage.Row + plage.Rows.Count - 1).Merge
Range("L" & plage.Row) = InputBox("Ecrire la date au format jj/mm/aa puis cliquer sur OK", "DATE")Sinon, tu dis.
A+
cela fonctionne parfaitement!
Il est vrai que je n'ai pas été très clair, dans mon explication, en fait la plage de sélection doit toujours aller de B à V.
il s'agit de 2 bâtiments différents sur lesquels s'effectuent les taches de la journée, après la variable qui change considérablement est la quantité de taches.
Ici cela ne prend que 15 lignes mais cela pourait en prendre 30!
Il est vrai que je ne me suis pas penché sur le fait de savoir si je ne pouvais pas définir la plage de colone automatiquement et ne demander à l'utilisateur de sélectionner uniquement le nombre de ligne!
Range("L" & Plage.Row & ":L" & Plage.Row + Plage.Rows.Count - 1).Merge
Range("L" & Plage.Row & ":L" & Plage.Row + Plage.Rows.Count - 1).HorizontalAlignment = xlCenter
Range("L" & Plage.Row & ":L" & Plage.Row + Plage.Rows.Count - 1).VerticalAlignment = xlCenter
Range("L" & Plage.Row) = InputBox("Ecrire la date au format jj/mm/aa puis cliquer sur OK", "DATE")ton code est super, j'y ai juste apporté les mises en formes "centrer".
si tu pouvais juste me donner un petite explication des actions du code afin que je puisse totalement le comprendre ce serait super.
Encore merci
Re,
Tu peu rendre le code plus cour et plus clair avec..
Sub démo()
'Pour exemple plage = Range("G10:M30")
'Plage.row = la première ligne de la plage = 10
'Plage.Rows.Count = Le nombre de lignes comprise dans la plage = 21
'Donc l'adresse devient L10:L(10+21-1)
With Range("L" & Plage.Row & ":L" & Plage.Row + Plage.Rows.Count - 1)
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("L" & Plage.Row) = InputBox("Ecrire la date au format jj/mm/aa puis cliquer sur OK", "DATE")
End SubA+