Macro qui laisse une ligne vide

Salut le forum,

encore une fois, j'ai un petit problème de code.

Voici d'abord le topo :

J'appuie sur un bouton et une macro effectue les actions suivantes :

Effacer les données d'une ligne désignée par une sélection dans un combobox et imprimer une nouvelle ligne de données qui sont, elles, le résultat de l'action de l'utilisateur. Pour l'instant, cette nouvelle ligne s'inscrit à la suite des autres lignes dans le fichier.

Mon problème maintenant, c'est que la macro qui efface ma ligne, laisse une ligne vide.

J'ai donc 2 options :

1re --- Trouver une façon de remplir la ligne vide avec les nouvelles données plutôt que de les inscrire à la suite. (C'est la solution que je préfèrerais)

2e --- Simplement trouver la ligne de code qui fera disparaître la ligne vide.

Voici mon code qui efface les données :

Sub effac()

Dim x As String

Sheets("Calendrier").Select

With Sheets("Calendrier")

x = Application.Match(Sheets("Entrées").[B4], .[H1:H500], 0)

.Rows(x).ClearContents

End With

End Sub

Voici mon code qui inscrit les nouvelles données :

Private Sub BTNenreg_Click()

Range("Entrées!B1") = Label4.Caption

Range("Entrées!B2") = Label2.Caption

Range("Entrées!B3") = Label3.Caption

Range("Entrées!B5") = TextBox1.Text

Range("Entrées!B6") = TextBox2.Text

Call effac

With Sheets("Calendrier")

ligne = .Range("A65536").End(xlUp).Row + 1

.Cells(ligne, 1) = Sheets("Entrées").Cells(1, 2).Value

.Cells(ligne, 2) = Sheets("Entrées").Cells(2, 2).Value

.Cells(ligne, 3) = "vs"

.Cells(ligne, 4) = Sheets("Entrées").Cells(3, 2).Value

.Cells(ligne, 5) = Sheets("Entrées").Cells(5, 2).Value

.Cells(ligne, 6) = "-"

.Cells(ligne, 7) = Sheets("Entrées").Cells(6, 2).Value

.Cells(ligne, 8 ) = Sheets("Entrées").Cells(4, 2).Value

.Cells(ligne, 9) = Sheets("Entrées").Cells(7, 2).Value

Columns.EntireColumn.AutoFit

End With

With Sheets("Entrées")

.Range("B1:B3").ClearContents

.Range("B5:B6").ClearContents

End With

End Sub

Merci pour votre aide.

Bonjour

A tu essayé:

Delete Shift:=xlUp à la place de ClearContents, le Delete Shift:=xlUp permet de supprimer la ligne et de remonter la ligne suivante

Bonsoir,

Avec ce que te propose CB60, tu peux modifer ta macro "efface" comme suit :

Sub effac() 
Dim x As String 
With Sheets("Calendrier")
.select
x = Application.Match(Sheets("Entrées").Range("B4"), .Range("H1:H500"), 0) 
.Rows(x).Delete Shift:=xlUp 'code de CB60
End With 
End Sub 

Essaye aussi d'enlever le ".select" qui ne sert à rien.

Amicalement

Dan

Salut le forum

1re --- Trouver une façon de remplir la ligne vide avec les nouvelles données plutôt que de les inscrire à la suite. (C'est la solution que je préfèrerais)

A tester sans ton fichier

Private Sub BTNenreg_Click()
Range("Entrées!B1") = Label4.Caption
Range("Entrées!B2") = Label2.Caption
Range("Entrées!B3") = Label3.Caption
Range("Entrées!B5") = TextBox1.Text
Range("Entrées!B6") = TextBox2.Text
With Sheets("Calendrier")
ligne = Application.Match(Sheets("Entrées").[B4], .[H1:H500], 0)
.Cells(ligne, 1) = Sheets("Entrées").Cells(1, 2).Value
.Cells(ligne, 2) = Sheets("Entrées").Cells(2, 2).Value
.Cells(ligne, 3) = "vs"
.Cells(ligne, 4) = Sheets("Entrées").Cells(3, 2).Value
.Cells(ligne, 5) = Sheets("Entrées").Cells(5, 2).Value
.Cells(ligne, 6) = "-"
.Cells(ligne, 7) = Sheets("Entrées").Cells(6, 2).Value
.Cells(ligne, 8) = Sheets("Entrées").Cells(4, 2).Value
.Cells(ligne, 9) = Sheets("Entrées").Cells(7, 2).Value
Columns.EntireColumn.AutoFit
End With
With Sheets("Entrées")
.Range("B1:B3").ClearContents
.Range("B5:B6").ClearContents
End With
End Sub

Mytå

Salut la gang!

Désolé pour le temps de réponse. J'espère que vous avez passé une belle fin de semaine.

Merci Mytå, Dan et CB60 pour vos réponses.

J'ai appliqué la méthode de Mytå qui fonctionne impeccablement bien. Je n'ai eu qu'à définir la variable ligne et tout a été parfait.

Merci encore pour le temps que vous consacrez à chacune de nos questions et pour la multitude de possibilités que vous nous offrez.

Rechercher des sujets similaires à "macro qui laisse ligne vide"