J'aurais une petite question à vous poser. Est-ce quelqu'un sait comment
faire une condition sous VBA, par exemple si A10 n'est pas vide, alors les
cellules B9:D13 ont une double bordure noire, ect ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
CAP2
Salut,
un truc du style :
Sub test()
If Not IsEmpty(range("A10") Then Range("B9:D13").Select
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
End if
End Sub
Ca convient ?
CAP2
Salut,
un truc du style :
Sub test()
If Not IsEmpty(range("A10") Then
Range("B9:D13").Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
If Not IsEmpty(range("A10") Then Range("B9:D13").Select
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
End if
End Sub
Ca convient ?
CAP2
aife1
Salut CAP2 !
Merci pour ta réponse !
Ca fonctionne impec (attention pour ceux qui veulent reprendre cette fonction, il manque une parenthèse à "If Not IsEmpty(range("A10")) Then").
Le problème est que, danc cet exemple, si A10 n'est pas vide, il y des bordures à "B9:D13", mais je voudrais aussi donc que si A10 est vide, il n'y est pas de bordure.
Dans ta fonction, si il y a du texte en A10 et que je lance la macro "Test", les bordures se font impec. Mais si je supprime le contenue de A10 et que j'exécute "Test", les bordures ne s'affacent pas. Le problème est que dans ce que je veux faire, le contenu de A10 peut changer plusieurs fois, étant donné qu'il s'agit d'un modèle. Il n'y aurait pas la possibilité de faire une fonction directement dans la feuille commençant par quelque chose du genre "Private Sub Worksheet_Change (ByVal target As Range)" ?
Merci d'avance !
"CAP2" a écrit dans le message de news:
Salut,
un truc du style :
Sub test()
If Not IsEmpty(range("A10") Then Range("B9:D13").Select
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
End if
End Sub
Ca convient ?
CAP2
Salut CAP2 !
Merci pour ta réponse !
Ca fonctionne impec (attention pour ceux qui veulent reprendre cette
fonction, il manque une parenthèse à "If Not IsEmpty(range("A10")) Then").
Le problème est que, danc cet exemple, si A10 n'est pas vide, il y des
bordures à "B9:D13", mais je voudrais aussi donc que si A10 est vide, il n'y
est pas de bordure.
Dans ta fonction, si il y a du texte en A10 et que je lance la macro "Test",
les bordures se font impec. Mais si je supprime le contenue de A10 et que
j'exécute "Test", les bordures ne s'affacent pas. Le problème est que dans
ce que je veux faire, le contenu de A10 peut changer plusieurs fois, étant
donné qu'il s'agit d'un modèle. Il n'y aurait pas la possibilité de faire
une fonction directement dans la feuille commençant par quelque chose du
genre "Private Sub Worksheet_Change (ByVal target As Range)" ?
Merci d'avance !
"CAP2" <CAP2@azerty.net> a écrit dans le message de
news:OHtpsvJoEHA.3820@TK2MSFTNGP09.phx.gbl...
Salut,
un truc du style :
Sub test()
If Not IsEmpty(range("A10") Then
Range("B9:D13").Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Ca fonctionne impec (attention pour ceux qui veulent reprendre cette fonction, il manque une parenthèse à "If Not IsEmpty(range("A10")) Then").
Le problème est que, danc cet exemple, si A10 n'est pas vide, il y des bordures à "B9:D13", mais je voudrais aussi donc que si A10 est vide, il n'y est pas de bordure.
Dans ta fonction, si il y a du texte en A10 et que je lance la macro "Test", les bordures se font impec. Mais si je supprime le contenue de A10 et que j'exécute "Test", les bordures ne s'affacent pas. Le problème est que dans ce que je veux faire, le contenu de A10 peut changer plusieurs fois, étant donné qu'il s'agit d'un modèle. Il n'y aurait pas la possibilité de faire une fonction directement dans la feuille commençant par quelque chose du genre "Private Sub Worksheet_Change (ByVal target As Range)" ?
Merci d'avance !
"CAP2" a écrit dans le message de news:
Salut,
un truc du style :
Sub test()
If Not IsEmpty(range("A10") Then Range("B9:D13").Select
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
End if
End Sub
Ca convient ?
CAP2
CAP2
Alors on modifie un peu :
Sub test()
Range("B9:D13").Select
If Not IsEmpty(range("A10")) Then
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
Ca mets les bordures s'il ya quelquechose en A10 et ça les enlève s'il n'y a rien en A10.
Quant à la fin de ta question, précise-moi à quel moment tu voudrais que ton code se déclenche (à l'ouverture, à le fermeture, dès que la valeur de A10 change,...)
A plus
CAP2
Alors on modifie un peu :
Sub test()
Range("B9:D13").Select
If Not IsEmpty(range("A10")) Then
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Ca mets les bordures s'il ya quelquechose en A10 et ça les enlève s'il n'y a
rien en A10.
Quant à la fin de ta question, précise-moi à quel moment tu voudrais que ton
code se déclenche (à l'ouverture, à le fermeture, dès que la valeur de A10
change,...)
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
Ca mets les bordures s'il ya quelquechose en A10 et ça les enlève s'il n'y a rien en A10.
Quant à la fin de ta question, précise-moi à quel moment tu voudrais que ton code se déclenche (à l'ouverture, à le fermeture, dès que la valeur de A10 change,...)
A plus
CAP2
aife1
Merci beaoucoup, ça marche super bien !
Pour ta question, dès que la valeur de A10 change, mais j'ai trouvé :
Private Sub Worksheet_Change(ByVal Target As Range) Application.Run "nom fichier.xls'!Test" End Sub
Ma question serait, toujours selon le contenu de A10, non pas de modifier les les bordures de B9:B13, mais les bordures de B9:D13 ET B15:D18. Lorsque je change la fonction par "Range("B9:D13", "B15:D18").Select", le résultat est que ça met fait une seule plage B9:D18, et non 2 plage bien définies. Aurais-tu une idée ?
Merci d'avance ...
"CAP2" a écrit dans le message de news:%23KAw%23$
Alors on modifie un peu :
Sub test()
Range("B9:D13").Select
If Not IsEmpty(range("A10")) Then
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
Ca mets les bordures s'il ya quelquechose en A10 et ça les enlève s'il n'y a
rien en A10.
Quant à la fin de ta question, précise-moi à quel moment tu voudrais que ton
code se déclenche (à l'ouverture, à le fermeture, dès que la valeur de A10 change,...)
A plus
CAP2
Merci beaoucoup, ça marche super bien !
Pour ta question, dès que la valeur de A10 change, mais j'ai trouvé :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Run "nom fichier.xls'!Test"
End Sub
Ma question serait, toujours selon le contenu de A10, non pas de modifier
les les bordures de B9:B13, mais les bordures de B9:D13 ET B15:D18. Lorsque
je change la fonction par "Range("B9:D13", "B15:D18").Select", le résultat
est que ça met fait une seule plage B9:D18, et non 2 plage bien définies.
Aurais-tu une idée ?
Merci d'avance ...
"CAP2" <CAP2@azerty.net> a écrit dans le message de
news:%23KAw%23$JoEHA.708@TK2MSFTNGP09.phx.gbl...
Alors on modifie un peu :
Sub test()
Range("B9:D13").Select
If Not IsEmpty(range("A10")) Then
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Pour ta question, dès que la valeur de A10 change, mais j'ai trouvé :
Private Sub Worksheet_Change(ByVal Target As Range) Application.Run "nom fichier.xls'!Test" End Sub
Ma question serait, toujours selon le contenu de A10, non pas de modifier les les bordures de B9:B13, mais les bordures de B9:D13 ET B15:D18. Lorsque je change la fonction par "Range("B9:D13", "B15:D18").Select", le résultat est que ça met fait une seule plage B9:D18, et non 2 plage bien définies. Aurais-tu une idée ?
Merci d'avance ...
"CAP2" a écrit dans le message de news:%23KAw%23$
Alors on modifie un peu :
Sub test()
Range("B9:D13").Select
If Not IsEmpty(range("A10")) Then
With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With
Il n'y aurait pas la possibilité de faire une fonction directement dans la feuille commençant par quelque chose du genre "Private Sub Worksheet_Change (ByVal target As Range)" ?
Dans le module de la feuille : Private Sub Worksheet_Change(ByVal zz As Range) If zz.Address <> "$A$10" Then Exit Sub Application.ScreenUpdating = False With [B9:D13] If [A10] <> "" Then .Borders.LineStyle = xlDouble .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone Else: .Borders.LineStyle = xlNone End If End With End Sub
AV
Il n'y aurait pas la possibilité de faire
une fonction directement dans la feuille commençant par quelque chose du
genre "Private Sub Worksheet_Change (ByVal target As Range)" ?
Dans le module de la feuille :
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$10" Then Exit Sub
Application.ScreenUpdating = False
With [B9:D13]
If [A10] <> "" Then
.Borders.LineStyle = xlDouble
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
Else: .Borders.LineStyle = xlNone
End If
End With
End Sub
Il n'y aurait pas la possibilité de faire une fonction directement dans la feuille commençant par quelque chose du genre "Private Sub Worksheet_Change (ByVal target As Range)" ?
Dans le module de la feuille : Private Sub Worksheet_Change(ByVal zz As Range) If zz.Address <> "$A$10" Then Exit Sub Application.ScreenUpdating = False With [B9:D13] If [A10] <> "" Then .Borders.LineStyle = xlDouble .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone Else: .Borders.LineStyle = xlNone End If End With End Sub
AV
AV
Juste 2 trucs : * Il n'est pas nécessaire de sélectionner une plage pour "agir" dessus * Pour enlever toutes les bordures d'une plage : [laPlage].Borders.LineStyle = xlNone
AV
Juste 2 trucs :
* Il n'est pas nécessaire de sélectionner une plage pour "agir" dessus
* Pour enlever toutes les bordures d'une plage :
[laPlage].Borders.LineStyle = xlNone
Juste 2 trucs : * Il n'est pas nécessaire de sélectionner une plage pour "agir" dessus * Pour enlever toutes les bordures d'une plage : [laPlage].Borders.LineStyle = xlNone