Problème avec la fonction Borders d'excel

  • Initiateur de la discussion Funcky
  • Date de début
F

Funcky

Guest
Bonjour tout le monde,

Voilà, j'ai un petit problème avec la fonction borders de VBA d'excel, je ne sais pas si c'est la bonne fonction car je veux déssiner des bordures autour des cellules calculées et pour ceci j'ai utilisé l'enregistrement des macros puis j'ai utilisé le contenu de la macro pour déssiner des contours de cellule, quand j'éxcute la fonction seule, elle fonctionne bien mais que je l'utilise à travers une autre fonction ou avec des paramètres, elle ne fonctionne pas que ça soit dans un module ou dans une feuille, et il ne m'affiche aucune erreur, que faire et merci d'avance?
 
C

Canardo

Guest
Bonjour Funky,

Il faudrait que tu copies le texte de ta macro dans le message, ou mieux dans un petit fichier joint pour qu'on voit où se situe l'erreur.

Mais surtout personnellement je te recommande les lignes suivantes:
Selection.Borders.LineStyle = 1' ou xlHairline , c'est pareil.
entoure toutes les cellules de la sélection d'une ligne fine.
Selection.Borders.Weight = 1
ligne pointillée fine. Tu changes 1 par 2 si tu veux une ligne continue, etc.
Fait les manip pour voir ce que tu préfères. et si tu veux supprimer les bordures: Selection.Borders.LineStyle = xlNone

ça te donnes en 1 ligne 1 entourage complet, au lieu de mettre 40 lignes pour chaque côté!

et n'oublie pas de cocher quadrillage en dernier onglet du pavé mise en page si tu veux seulement avoir le quadrillage apparent.

Bye
 
F

Funcky

Guest
Bonjour canardo,

voici la procédure que j'utilise pour faire la bordure autour d'un tableau que je calcule à travers une base de données access par ado, une fois un client choisi, le tableau s'élargi pour toutes les commandes de ce même client et puis je dois entouré le tableau d'une bordure épaisse dont l'intérieur est fin. donc à la fin des calculs je lance cette procédure avec 2 paramètres la bordure 1 et la bordure de fin 2

Sub bordure(m1 As Integer, m2 As Integer)

Application.Sheets('Clients').Range('A' & m1 & ':F' & m2).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub

cette procédure existe dans un module au même niveau que la procédure qui l'appelle, et sans paramètres et en cliquant sur démarrer une procédure seule, elle fonctionne bien.

je ne sais pas d'ou vient le problème, il n'affiche pas d'erreur, et je suis sûr qu'il passe par cette procédure car j'ai vérifier, j'éfface toujours les bordures après chaque essai rien.

Merci d'avance
 

Hervé

XLDnaute Barbatruc
Bonjour

Si je peux me permettre cette intervention, as tu essayé de tester tes variables m1 et m2, en placant en tête de procédure des msgbox ?

Sinon, une petite variation de ta macro, afin de la rendre plus 'lisible' :


Code:
Sub bordure(m1 As Integer, m2 As Integer)
Dim plage As Range

Set plage = Sheets('Clients').Range('A' & m1 & ':F' & m2)

plage.Borders.Weight = xlThin
plage.Borders(xlEdgeLeft).Weight = xlMedium
plage.Borders(xlEdgeTop).Weight = xlMedium
plage.Borders(xlEdgeBottom).Weight = xlMedium
plage.Borders(xlEdgeRight).Weight = xlMedium
End Sub

En espérant t'avoir été utile.

Salut
 

Funcky

XLDnaute Nouveau
Salut tout le monde,

J'ai réalisé ce que tu m'as donné Hervé, mais sans résultat aussi je vous envoie le fichier excel seul car la base de données est enorme avec un échantillon des clients

[file name=Facturation RST2_20050515165854.zip size=28940]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Facturation RST2_20050515165854.zip[/file]

la procédure client() importe les commandes du clients et fait référence à la procédure bordure qui doit dessiner les bordures mais elle ne marche pas.

Merci pour votre aide,

Message édité par: funcky, à: 15/05/2005 17:06
 

Pièces jointes

  • Facturation RST2_20050515165854.zip
    28.3 KB · Affichages: 37

Hervé

XLDnaute Barbatruc
Re bonjour tout le monde

Funcky, je ne peut pas lancer ta macro bordure car elle se lance après l'import d'un fichier que je n'ai pas. :)

Par contre, essaye ce type de code :

Sub bordure()
Dim plage As Range

Set plage = Range('a1').CurrentRegion

plage.Borders.Weight = xlThin
plage.Borders(xlEdgeLeft).Weight = xlMedium
plage.Borders(xlEdgeTop).Weight = xlMedium
plage.Borders(xlEdgeBottom).Weight = xlMedium
plage.Borders(xlEdgeRight).Weight = xlMedium
End Sub

Salut
 
C

Canardo

Guest
Salut Funky, Salut Hervé, & les autres itoo

Je viens de rentrer et je viens aux nouvelles de notre petit Forum chéri.

Monsieur Hervé a très Bien résumé la situation, c'est exactement ce que j'allais te préconiser, je t'avais donné les indic de bases pour que tu extrapoles, et surtout te débarasse de tout ce fatras qui fait 150 lignes ou presque dans lequel un pingouin y retrouve pas ses petits.

Quant aux codes xlnone, ils ne servent à rien, surtout pas les none de diagonales...

Bye
 

Funcky

XLDnaute Nouveau
Bonjour tout le monde dans le forum,

voilà, j'ai attaché au fichier excel, une copie de la base de données réduite version 97, j'ai fait tout ce que vous m'avez dit mais rien ne marche, apparement ça doit être un problème dans excel, :eek:hmy:

vous pouvez changer l'adresse qui mène vers la base de données

Merci pour aide, [file name=Facturation2.zip size=45550]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Facturation2.zip[/file]
 

Pièces jointes

  • Facturation2.zip
    44.5 KB · Affichages: 39
  • Facturation2.zip
    44.5 KB · Affichages: 36
  • Facturation2.zip
    44.5 KB · Affichages: 35

Hervé

XLDnaute Barbatruc
Bonjour

Place ce code dans le module standard : actions

Sub bordure()
Dim plage As Range

Set plage = sheets('Clients').Range('a1').CurrentRegion

plage.Borders.Weight = xlThin
plage.Borders(xlEdgeLeft).Weight = xlMedium
plage.Borders(xlEdgeTop).Weight = xlMedium
plage.Borders(xlEdgeBottom).Weight = xlMedium
plage.Borders(xlEdgeRight).Weight = xlMedium
End Sub

Tu crée un menu qui appel deux macros :

Sub import_client(t As Integer)
Sub client(nom As String, t As Integer)

Par contre tu ne renvois à la macro bordure qu'a la fin de la deuxième ??? C'est sur que ca ne peut pas fonctionner lorsque tu lances impot_client :)

donc à la fin de tes deux macros renvoi à la sub bordure, en placant simplement bordure (tu n'a plus besoin de passer les deux variables m1 et m2).

De plus à la fin de ces 2 macros tu renvois à la macro CommandBarFeuilles (Call CommandBarFeuilles('', t)), macro qui te sert à générer ton menu. Je suis pas sur que tu es besoin de créer ton menu après chaque utilisation ????

Voilà

J'espère t'avoir été utile.

Salut
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 014
Membres
103 699
dernier inscrit
samSam31