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 SubMytå
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.