Code VBA - Problème avec les bordures

Bonsoir,

J'ai un problème un peu bizarre. Sur la base d'un code que Papou et Banzai m'avait aidé à mettre en place (Code du UserForm1), j'ai tenté de créé le code du UserForm 3. Mais à certaines conditions que je ne suis pas arrivé à déterminer, mon code pour le UserForm3 bloque parfois sur la mise en forme, à partir de la ligne .Borders(xlEdgeTop).Weight = xlMedium. D'autres fois ça fonctionne bien, sans que je sache pourquoi.

J'ai tenté un enregistrement d'une macro, mais ça ne fonctionne pas mieux.

Lorsque ça bloque et que j'interromps le code, si je tente de sélectionner manuellement la plage A4:B10 et que j'effectue un clic droit afin d'atteindre le "Format des cellules", ça ne passe pas ; la fenêtre "Format de cellule" ne s'ouvre pas.

Saurriez-vous m'aider ?

Cordialement.

Bonsoir

Dans ton code Userform3, macro commandbutton, remplace la partie de code comme ceci :

With Range("A4:B10")
    .Borders.LineStyle = xlNone
    .BorderAround Weight:=xlMedium
    .Borders(xlInsideVertical).Weight = xlHairline
    .Borders(xlInsideHorizontal).Weight = xlHairline
    .Interior.ColorIndex = 40
End With

Amicalement

Bonsoir

Juste pour le plaisir d'avoir un code plus court, cela n'enlève en rien le travail de Dan

             With Range("A4:B10")
                .Borders.Weight = xlHairline
                .BorderAround Weight:=xlMedium
                .Interior.ColorIndex = 40
            End With

Mais je comprends pas pourquoi le code précédent plante

Salut Dan,

Longtemps plus parlé

Je te remercie infiniment pour ton aide. Ca fonctionne parfaitement

Il y a des fois où j'aimerais comprendre pourquoi le même code fonctionne d'un coté mais pas de l'autre. Mais bon, là j'ai d'autres soucis.

Puis-je encore te demander de regarder le problème suivant ?

Dans la feuille "Saisie", j'ai le code

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Objet As String, Dicastère As String, Date_référence As Date, Nombre_heures As Single, Municipal As String, No_pièce As Integer
Dim i As Integer

If Flag Then Exit Sub

If Not Application.Intersect(Target, Range("E4:K65000")) Is Nothing Then

    If Cells(Target.Row, 1) = "" Then ' si la ligne n'est pas numérotée, on l'a numérote
        Cells(Target.Row, 1) = Target.Row - 3
    End If 

            If Range("B" & Target.Row) = "" Then
                MsgBox ("Veuillez saisir au préalable un ''Objet''")
                'Application.EnableEvents = False

                Flag = False
                 Target = ""
                Exit Sub
....................

Comment faire afin que ça ne tourne pas en rond ? Pour l'instant, si je saisis une donnée dans l'une des cellules "E4:I4" sans que la cellule B4 contienne du texte, J'ai indéfiniment le message "Veuillez saisir au préalable un 'Objet'' qui revient à l'écran, au lieu que la macro s'arrête comme désiré.

Cordialement.

EDIT : Salut Banzai. Merci à toi également

Bonjour

Edit: Désolé j'ai répondu trop vite

Si un modo peut supprimer ce message inutile

Salut le forum

Je ne vois pas le rapport avec la question initiale : Code VBA - Problème avec les bordures

Pour revenir au problème, ton code modifier la cellule (Target) avec ""

            If Range("B" & Target.Row) = "" Then
                MsgBox ("Veuillez saisir au préalable un ''Objet''")
                'Application.EnableEvents = False

                Flag = False
                 Target = ""
                Exit Sub

Tu devrais mettre le Flag à True si tu veux arrêter de boucler

Et en début de code

If Flag Then Flag = Not Flag: Exit Sub

Pense à modifier le reste de la macro

Flag = True
 Target = ""
Exit Sub

Mytå

Merci pour votre aide.

Mytå, ça fonctionne exactement comme désiré. C'est parfait

Bonnes salutations.

Rechercher des sujets similaires à "code vba probleme bordures"