Ajouter une Bordure de Titre
RésoluBUDGETS Messages postés 1608 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous,
Feuille Propositions menus midi retrait ! ligne 1 : Le titre s'affiche bien et la bordure se fait correctement sans l'intérieur dans les différentes colonnes. Cette première ligne est parfaite.
Toutes les 14 lignes : le titre s'affiche bien mais la bordure est absente.
qui va pouvoir m'aider à résoudre ce problème ? Ensuite, cette absence résolue, je m'attaquerai à remplir les lignes et colonnes suivantes.
D'avance merci pour votre aide. Bonnes fin de journée à toutes et à tous. Prenez bien soin de vous. Cordialement.
Quand cjoint refonctionnera, je vous joindrai le fichier.
Procédure GénPropMMR :
Option Explicit Sub GénPropMMR() 'Déclaration des variables. nm = numéro menu. Je représente le nombre de lignes, excepté la ligne titre;le décompte commence donc à la ligne 2. DatJ = Date du jour. Dim Lig As Long, Col As Long, nm As Long, J As Long Dim Datj As Date ' ScreenUpdating True si la mise à jour de l’écran est activée. Type de données Boolean en lecture-écriture. Application.ScreenUpdating = False 'Initialisations. WorksheetFunction.WorkDay : Renvoie un nombre représentant une date qui est le nombre de jours ouvrés indiqué avant ou après une date (date de début). 'Les jours ouvrés excluent les week-ends et les jours de congés. Utilisez la fonction WORKDAY pour exclure les week-ends et les jours de congés lorsque vous calculez les 'dates d'échéance des factures, les heures de livraison attendues ou le nombre de jours ouvrés effectués. 12 représente le nombre de mois, 31 équivaut au nombre de jours 'maximum d'un mois. nm =1 : le numéro menu commence à 1. Datj = WorksheetFunction.WorkDay(DateSerial(Range("Année_en_Cours") - 1, 12, 31), 1) nm = 1 'Remplissage. Worksheet("Propositions MMR") : il s'agit de la feuille dont le nom est indiqué à l'intérieur de la parenthèse. With Worksheets("Propositions menus midi retrait") 'B:H : représente les colonnes de la feuille Propositions MMR qui seront à remplir. ClearContents : Masquer toutMéthode ClearContents telle qu'elle s'applique à l'objet 'Range. Efface les formules de la plage. .Range("B:H").ClearContents 'For Lig = 1 to 532 Step 14 : 1 to 532 : reprense le nombre de lignes à remplir (y compris la ligne titre). Step : Le mot clé Step est employé dans les contextes suivants : 'For...Next, instruction. For Lig = 1 To 532 Step 14 Call AjouterBordureTitre 'For Col = 2 to 8 : Pour les colonnes 2 à 8 (la colonne A n'est pas prise en compte, le décompte commence donc à la colonne B jusqu'à la colonne H incluses. For Col = 2 To 8 'En tête. À la ligne 1 (nom compris la ligne titre), va écrire MMR et formater le numéro menu (nm);À la ligne 2, (immédiatement après la précédente), va écrire la date 'du jour. .Cells(Lig + 0, 1) = "Propositions menus midi retraite" 'Incrémentations pour menu suivant. 'nm = nm + 1 'Datj = WorksheetFunction.WorkDay(Datj, 1) 'If Year(Datj) > Range("Année_en_Cours").Value Then Exit For Next Col Next Lig End With 'Call AjouterBordureTitre End Sub
Procédure AjouterBordureTitre
Option Explicit Sub AjouterBordureTitre() Dim Lig As Long, Col As Long, nm As Long, J As Long Dim Datj As Date ' ' AjouterBordureTitre Macro ' ' Range("A1:H1").Select 'For Lig = 1 To 532 Step 14 Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With For Lig = 1 To 532 Step 14 Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("A4").Select Next Lig End Sub
Modération : merci de mettre en forme le message et le code comme expliqué ici.
Windows / Chrome 13,1.0.0.0
- Ajouter une Bordure de Titre
- Bordure de page word - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
- Je cherche une chanson dont je ne connais pas le titre - Guide
- Ajouter une signature sur word - Guide
- Ajouter une liste déroulante excel - Guide
19 réponses
Bonjour,
Allez-vous enfin nous expliquer pourquoi vous tenez tant à faire la mise en forme par vba sur une plage constante ?
Cela pourrait se justifier si votre plage était variable en nombre de lignes et de colonnes, mais ce n'est pas le cas, n'est-ce pas ? Seul le contenu de quelques cellules doit évoluer.
Comme je vous l'ai dit la mise en forme complète et définitive prends moins d'une minute alors que vous êtes sur le vba depuis plusieurs semaines !
Bonjour Charles,
Je souhaite à faire la mise en forme par VBA afin d'apprendre comment cela se fait. Manuellement, je sais. C'est toujours utile d'approfondir ses connaissances en programmation, même si je ne suis pas un expert.
https://www.cjoint.com/c/NLkmslPQcC5
Bonjour,
L'intention est louable, mais vos lacunes en Excel et Vba sous pénalisent.
On peut tenter d'y aller pas à pas.
Donnez l'instruction vba pour (une seule suffit) :
1) Mettre les bordures épaisses autour de la cellule A1
2) Mettre les bordures épaisses autour des cellules A1 à H1
Donnez différentes façons pour désigner la cellule A
Bonjour Charles,
Mettre les bordures épaisses autour des cellules A1 à H1 :
Range("A1:H1").Select Sélection des cellules;
.Weight = xlThick Bordures épaisses
Donnez différentes façons pour désigner la cellule A : je ne sais pas (une première possible : range("A").select. d'autres : aucune idée.
J'ai pensé également à copier les cellules A1:H1 avec la bordure dans le presse-papier puis avec step14 d'une part et Paste d'autre part à copier le contenu du presse papier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionRe,
Si vous vous contentez de recopier partiellement l'enregistreur de macros vous allez avoir du mal à faire ce que vous voulez. Sans les bases vous ne pourrez pas finaliser votre feuille Proposition MMR. De toutes façons, il faut y aller par étapes/
Faites et testez une procédure qui met les bordures autour des cellules de A1 à H1
Bonsoir Charles,
Avez-vous regardé la macro AjouterBordureTitre ? Peut-on supprimer certaines lignes et, si oui, lesquelles ?
J'ai le sentiment d'avoir fait tout ce qui était possible sans obtenir le résultat escompté malgré l'aide du lien proposé dans votre précédent message. Alors merci de me proposer votre solution afin que toutes les 14 lignes la bordure sorte. D'avance merci. Je ne vois pas d'inconvénients à ce que , si le jugez utile, de faire appel à quelqu'un.
J'ai testé, sans succès, à partir du lien indiqué dans votre message, l'exemple génère une bordure simple autour de toutes les cellules de la plage. ws: variable non définie.
Bonjour,
J'ai testé, sans succès, à partir du lien indiqué dans votre message, l'exemple génère une bordure simple autour de toutes les cellules de la plage. ws: variable non définie.
Oui, c'est bien ce qui est indiqué dans l'aide. Que faudrait-il faire ensuite pour ne garder que les bordures extérieures ? Avez-vous décortiqué ce que vous a donné l'enregistreur de macros ?
Je réitère ma question : quelles sont les différentes façons de désigner une cellule, par exemple la cellule B3 ? Vous avez les exemples dans votre fichier.
Bonjour Charles,
Oui, c'est bien ce qui est indiqué dans l'aide. Que faudrait-il faire ensuite pour ne garder que les bordures extérieures ? Avez-vous décortiqué ce que vous a donné l'enregistreur de macros ? Indiqué dans l'aide : je n'ai pas compris ce que vous voulez dire. faire ensuite pour ne garder que les bordures extérieures? à mon avis, supprimer certaines instructions. Enregistreur de macros :je n'ai as compris pourquoi il y a tant d'instructions et, voire même, tant de répétitions.
Bonjour de nouveau,
Vous avez dit : J'ai testé, sans succès, à partir du lien indiqué dans votre message, l'exemple génère une bordure simple autour de toutes les cellules de la plage.
Sans succès ? Vous avez une erreur ou le résultat n'est pas celui que vous voulez ?
Faites un fichier séparé avec ce code et postez le
Bonjour Charles,
Le fichier séparé que vous avez demandé. Il y a des erreurs. Pour l'instant, je ne sais pas si le résultat est celui que je veux.
https://www.cjoint.com/c/NLqiF11ME55
Bonjour,
C'est un début.
1) En regardant mieux l'aide vous auriez pu voir que ws représente le Worksheet, c'est à dire la feuille sur laquelle vous voulez travailler, ici Feuil1
2) Ensuite, même sur 3 lignes vous avez réussi à mal recopier le code proposé, il y a pourtant un bouton copier sur le site, vérifiez !
Le nouveau fichier rectifié qui sort une erreur de syntaxe.
https://www.cjoint.com/c/NLqjJcb6FC5
À partir de samedi prochain, vous serez absent, ce sont les vacances de Noël ? Savez-vous si vous pourrez être présent à nouveau à partir du lundi 06 janvier 2025 ?
Re,
Votre niveau est vraiment très faible.
Voici une syntaxe correcte : modifiez puis ajoutez le code pour mettre une bordure épaisse rouge en bas
Sub Bordures() Dim RNG As Range Set RNG = Worksheets("Feuil1").Range("B6", "D8") 'Bordures simples With RNG.Borders .LineStyle = xlContinuous .Weight = xlThin End With End Sub
J'ai une prolongation jusqu’à mi-janvier pour assurer un biseau avec Dimitri mon successeur.
Dans quelle partie de l'aide dois-je regarder pour remplir uniquement la partie basse ?
Ce n'est pas sûr que ce soit ce que vouliez quant à l'effacement.
https://www.cjoint.com/c/NLqpgz8mzD5
"assurer un biseau avec Dimitri mon successeur." : c'est quoi un biseau ?
Borders :variable non définie.
https://www.cjoint.com/c/NLqpobTQFz5
Re,
Il y a de l'idée.
Attention avec la clause with, il faut un point au début de l’instruction suivante
Voici une possibilité :
Sub Bordures() Dim RNG As Range Set RNG = Worksheets("Feuil1").Range("B6", "D8") 'Bordures simples With RNG.Borders .LineStyle = xlContinuous .Weight = xlThin End With With RNG 'Bordures inférieure et horizontale intérieure .Borders(xlEdgeBottom).Weight = xlThick .Borders(xlEdgeBottom).Color = RGB(255, 0, 0) .Borders(xlInsideHorizontal).LineStyle = xlNone End With End Sub
Maintenant, donnez plusieurs façons de désigner une plage de cellules
Cela correspond-il ) vos souhaits ?
Place de cellules :A1:F25; "A1","F25";et peut être A1.F25
https://www.cjoint.com/c/NLqq52T1Ih5
"Pas tout à fait" : cela concerne ce que vous attendiez de la macro ? Ou, plus plausible, la façon de designer une plage de cellules.
range("B3:F3).select
cells(3,2).select
cells(3,6).select
Columns("B:F").select
Dans ma réponse précédente, j'ai oublié encore une fois d'ajouter .select
Dans Sélections, quel est le chapitre que je dois consulter ?
Il y a un fichier Propositions ?
Personnellement, je trouve cette aide Sélections très claire et, chose très rare, très commentée. Elle donne des exemples et la manière de créer. Bravo.
Bonjour,
Effectivement pour désigner une cellule on va utiliser soit Range soit Cells.
Cells est plus facile à utiliser dans une boucle.
Dans le fichier de test pour sélectionner la plage B6 à D6 (1 ligne 3 colonnes) on peut faire
Range("B6:D6") ou Range("B6","D6")
avec Cells on ne peut pas désigner directement une plage, il faut passer par Range en donnant les deux extrêmes comme ceci
Range(Cells(6,2),Cells(6,4))
ou mieux en désignant la première cellule, Cells(6,2) et en redimensionnant cette zone avec Resize en indiquant le nombre de lignes et de colonnes comme ceci
Cells(6,2).Resize(1,3), on travaille alors sur la zone voulue (1 lignes 3 colonnes)
Dans le fichier de test bordures, essayer de remplacer les Range par Cells, on verra les boucles après
"Le fichier propositions est le dernier que j'ai transmis " : quel est son nom exact et sa date d'envoi ou le numéro du message ?
C'est le lieu où Objet Borders (Excel) se trouve dans le lien que vous m'avez indiqué (https://excel-pratique.com/fr/vba/selections)