Formule VBA pour mettre à la ligne quand remplie

Bonsoir à tous,

J'aimerais avoir une formule place dans ma feuille active en (Private sub) que quand je tape du texte sur une ligne de la colonne D, quand elle est remplie cela passe automatiquement à la ligne.

J'ai pas trouver mon bonheur sur google .

D'avance merci à tous pour une réponse

Eugène

Bonjour,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then Application.Goto Cells(Target.Row + 1, "A")
End Sub

autre exemple avec vérification de la valeur inscrite en colonne D

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
    If Target.Value = "" Then
        MsgBox "Vous devez renseigner la cellule"
        Application.Goto Target
     Else
        Application.Goto Cells(Target.Row + 1, "A")
     End If
End If
End Sub

Salut Eugène, le fil

Il faut une formule pour ça ?

[Format de cellule] [Alignement] [Renvoyer à la ligne automatiquement]...

Ou alors j'ai pas tout compris

Désolé je teste la première formule mais cela ne fonctionne pas. Par contre est-il possible de mettre 2 private sub dans la même feuille ou faut-il changer quelques chose. Pour tester ta formule j'ai supprimer le 1er private sub.

D'avance merci

Eugène

[quote=i20100 post_id=812488 time=1573838013 user_id=47027]

Bonjour,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then Application.Goto Cells(Target.Row + 1, "A")
End Sub

re,

laquelle des 2 propositions veux-tu garder ?

ou as-tu copier la macro ?

Salut Eugène, le fil

Tu n'est pas sans savoir que l'évènement Change de ta Feuille se produit soit en appuyant sur "Entrée" soit sur "TAB" ou par code.

A part utiliser les API Windows je ne vois pas comment faire; Par contre si le fait de mettre en forme ta cellule après validation ne te gènes pas tu peux utiliser un code dans ce style. tu dois d'abord mettre un Label sur ta feuille.

Ensuite tu crée un module tu colles cette sub.

Sub CalculerLongueur(Entry As Range)
    Static temp As String
    Static temp1 As String: Dim i As Long
    On Error Resume Next
    With Worksheets("feuil1").Label1
        If temp = Entry Then Exit Sub
        For i = 1 To Len(Entry.Value)
            .Caption = Left(Entry.Value, i)
            temp = Left(Entry.Value, i - 1)
            temp1 = Mid(Entry.Value, i, Len(Entry.Value))
            If .Width > Entry.Width Then
                Entry.Value = temp
                Entry.Offset(1, 0).Value = temp1
                Exit For
            End If
        Next
    End With
    temp = "": temp1 = ""
End Sub

Ensuite dans le code de ta feuille tu y place les deux Méthodes

Private Sub Worksheet_Activate()
With Worksheets("Feuil1")
.Label1 = "X"
.Label1.Visible = False
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
CalculerLongueur Target
End Sub

Bonjour,

Celane fonctionne, pas de problème je fait la méthone plus simple (Entrée)

Grand merci quand même

Eugène

Salut Eugène, le fil

Tu n'est pas sans savoir que l'évènement Change de ta Feuille se produit soit en appuyant sur "Entrée" soit sur "TAB" ou par code.

A part utiliser les API Windows je ne vois pas comment faire; Par contre si le fait de mettre en forme ta cellule après validation ne te gènes pas tu peux utiliser un code dans ce style. tu dois d'abord mettre un Label sur ta feuille.

Ensuite tu crée un module tu colles cette sub.

Sub CalculerLongueur(Entry As Range)
    Static temp As String
    Static temp1 As String: Dim i As Long
    On Error Resume Next
    With Worksheets("feuil1").Label1
        If temp = Entry Then Exit Sub
        For i = 1 To Len(Entry.Value)
            .Caption = Left(Entry.Value, i)
            temp = Left(Entry.Value, i - 1)
            temp1 = Mid(Entry.Value, i, Len(Entry.Value))
            If .Width > Entry.Width Then
                Entry.Value = temp
                Entry.Offset(1, 0).Value = temp1
                Exit For
            End If
        Next
    End With
    temp = "": temp1 = ""
End Sub

Ensuite dans le code de ta feuille tu y place les deux Méthodes

Private Sub Worksheet_Activate()
With Worksheets("Feuil1")
.Label1 = "X"
.Label1.Visible = False
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
CalculerLongueur Target
End Sub
Rechercher des sujets similaires à "formule vba mettre ligne quand remplie"