Vba : code pour supprimer une ligne

Résolu/Fermé
Usgpa - 15 févr. 2010 à 11:08
 Usgpa - 15 févr. 2010 à 16:28
Bonjour,

Je souhaiterai en appuyant sur un bouton de mon userform supprimer une ligne (d) et l'insérer dans une autre feuille du même classeur. Est-ce possible ?

Merci d'avance !

7 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
15 févr. 2010 à 11:43
Salut,
Comment choisis tu la ligne à supprimer?
S'il s'agit d'une la ligne dont l'utilisateur aura au préalable sélectionné une cellule :

ActiveCell.EntireRow.Copy Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0)
' Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0) est la feuille de destination (feuil2) première ligne vide
ActiveCell.EntireRow.Delete

1
En fait , je connais le numéro de la ligne ("d") trouvé grâce à une procédure de recherche à l'ouverture du userform. Mais je peux aussi la sélectionner.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
15 févr. 2010 à 12:06
Si tu connais le numéro de la ligne :

Rows(d).EntireRow.Copy Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0)
Rows(d).EntireRow.Delete

0
Merci Pijaku, ta procédure fonctionnant bien ,j'ai essayé de l'utilisé pour copier une ligne dans une autre fichier (Feuille nommée "IAR" dans le Fichier "z:\mes documents\Dailly Test\Dailly I\IAR.xls") et là ca ne fonctionne pas. Sais tu où est l'erreur dans cette procédure :

Private Sub CommandButton2_Click()
Set Plage1 = [_filterdatabase].Offset(1).Resize(, 1)
Set Plage1 = Plage1.Resize(Plage1.Count - 1).SpecialCells(xlCellTypeVisible)
Range("I" & Plage1.Row) = "IAR"
Rows(Plage1.Row).EntireRow.Copy Sheets("Archives régularisations").Range("A65536").End(xlUp).Offset(1, 0)
Workbooks.Open "z:\mes documents\Dailly Test\Dailly I\IAR.xls"
Rows(Plage1.Row).EntireRow.Copy Workbooks("IAR.xls").Worksheets("IAR").Range("A65536").End(xlUp).Offset(1, 0)
Workbooks("New ClasseurTEST.xls").Worksheets("Archive Cessions").Rows(Plage1.Row).EntireRow.Delete
Workbooks("IAR.xls").Save
Workbooks("IAR.xls").Close

?

Merci beaucoup.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
15 févr. 2010 à 16:05
ou est l'erreur?
Plage1.Row?
Qu'elle ligne est surlignée en jaune par le débogage?
0
A vrai dire, le problème c'est qu'il n'y a pas d'erreur. Le fichier s'ouvre puis se ferme et la ligné n'est pas insérée mais la procédure n'est pas mis en cause par le debogage vba.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
15 févr. 2010 à 16:22
Dans ce cas, déclenche ta macro "pas à pas" et vérifies ta feuille ecxel au fur et à mesure, tu verras ce qui déconnes et pourras le modifier.
0
C'est bon, je viens de trouver. Il fallait en fait précisé que la plage concernait le premier fichier :

Workbooks("New ClasseurTEST.xls").Sheets("Archive Cessions").Rows(Plage1.Row).EntireRow.Copy Workbooks("IAR.xls").Sheets("IAR").Range("A65536").End(xlUp).Offset(1, 0)

En tout cas merci pour tout !
0