supprimer les derniere ligne d'un classeur

Z

zouille

Guest
salut forum :woohoo:


Vola ,dans mon projet de devis , j aimerais a un moment, pouvoir effacer, grace a un bouton , les 7 dernieres lignes de mon devis qui ne doivent pas figurer sur la facture ( qui est généré a partir du devis).

Comment faire , sachant que le devis n'a jamais la meme longueur ?

J'aimerais aussi pouvoir modifier une cellule ( ligne 47) mais comment faire sachant qu'elle peut descendre si devis plus long?

Concretement , j'ai un userform qui me permet de rechercher le devis voulu par un combobox , une fois selectionné, il s ouvre et si je clic sur le bouton 'generer facture' il y a creation de la facture a partir de ce devis ou (mise a part remplacer devis par facture) supprimer les 7 deniere lignes et en remplacer une

Merci a tous
 

porcinet82

XLDnaute Barbatruc
Salut zouille,

Je te propose 2 solutions par macro, la première étant ma premières idées, mais le problème c'est qu'elle ne fonctionne que si tu n'as pas de cellules vides.

Code:
Sub sup_lig()

Application.Goto Sheets('feuil1').Range('A65536')
Selection.End(xlUp).Select
Selection.Offset(-6, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.ClearContents
End Sub


Concernant la seconde idées, elle est je pense plus adaptée, mias je te laisse le choix.

Code:
Sub sup_lig_2()
Dim num_ligne As Byte

Application.Goto Sheets('feuil1').Range('A65536')
Selection.End(xlUp).Select
Selection.Offset(-6, 0).Select
For i = 1 To 7
    num_ligne = ActiveCell.Row
    Rows(num_ligne).Delete
Next i
End Sub

Pour ce qui est de ta ligne 47, est-ce que l'on peut la reconnaitre d'une certaine facon, par ce que la pour moi, ce n'est qu'une ligne parmis les 65536 que propose une feuille excel ;)

@+
 
Z

zouille

Guest
porcinet82 écrit:
Pour ce qui est de ta ligne 47, est-ce que l'on peut la reconnaitre d'une certaine facon, par ce que la pour moi, ce n'est qu'une ligne parmis les 65536 que propose une feuille excel ;)

@+

oui , il y a une phrase dans une des cellule (c'est celle ci que je veux remplacer) sinon , c'est la ligne juste sous 'total'

merci de ton aide
 

porcinet82

XLDnaute Barbatruc
Salut Zouille,

Tiens, voila une macro qui devrait te supprimer la ligne juste sous le mot Total (écrit de cette manière). Par contre, si tu as plusieurs mots Total, dans ta feuille, la macro te supprime toutes les lignes apres ce mot. Il te suffit alors de rajouter un Exit Sub apres la ligne Rows(ligne+1).Delete.

Code:
Sub sup_lig_47()
Dim Cellule As Range
Dim ligne As Byte

For Each Cellule In ActiveSheet.UsedRange
    If Cellule = 'Total' Then
        ligne = Cellule.Row
        Rows(ligne + 1).Delete
    End If
Next Cellule
End Sub

Voili voilou,

@+
 
Z

zouille

Guest
porcinet82 écrit:
Concernant la seconde idées, elle est je pense plus adaptée, mias je te laisse le choix.

Code:
Sub sup_lig_2()
Dim num_ligne As Byte

Application.Goto Sheets('feuil1').Range('A65536')
Selection.End(xlUp).Select
Selection.Offset(-6, 0).Select
For i = 1 To 7
    num_ligne = ActiveCell.Row
    Rows(num_ligne).Delete
Next i
End Sub

@+

salut a toi et merci

ca marche bien par contre j'aimerais l'integrer a mon bouton 'valider' qui contient deja du code vba .
Comment l'integrer dans ce code ?
J'ai essayé en la renomant 'function' et tenter un appel mais ca ne marche pas

Merci a toi
 

porcinet82

XLDnaute Barbatruc
Salut Zouille,

Et bien c'est tout simple, soit tu mets par exemple le code de cette facon :

Code:
Private Sub CommandButton1_Click()
Dim num_ligne As Byte
Dim ... 'tes variables

'ton code

Application.Goto Sheets('feuil1').Range('A65536')
Selection.End(xlUp).Select
Selection.Offset(-6, 0).Select
For i = 1 To 7
    num_ligne = ActiveCell.Row
    Rows(num_ligne).Delete
Next i

'ton code
End Sub


Ou alors, tu gardes ton code et tu appels la macro, ce qui donne quelque chose du genre:

Code:
Private Sub CommandButton1_Click()
Dim ... 'tes variables

'ton code

sup_lig_2 'tu appels la macro qui s'execute a ce moment la.

'ton code
End Sub

J'espere que cela te convient. Et si tu as d'autres questions, n'hésite pas.

@+
 
Z

zouille

Guest
merci a toi
Mais les 2 solution ne marche pas

voici mon code
Code:
Private Sub CommandButton1_Click()
selection.Hide
Workbooks.Open ThisWorkbook.Path & '\\devis\\' & cbx_ChoixClient.Value & '-' & cbx_ChxDate & '.xls'
Range('f9') = 'FACTURE'
Range('f17') = 'TVA-I FR 57437806896'
Sheets('devis').Name = 'facture'
sup_lig_2
ActiveWorkbook.SaveAs ThisWorkbook.Path & '\\Factures\\' & '' & ActiveWorkbook.Name
Workbooks('devis.xls').Close sauvegarde = True
End Sub

j'ai essayer tes 2 methodes mais j'ai un message d'erreur ' Erreur de compilation : membre de méthode ou de données introuvable avec :
Function sup_lig_2() en jaune.
ou
Private Sub CommandButton1_Click() en jaune en fonction de la methode et dans tous les cas : le End de : selection.End(xlUp).Select : surligné en noir


merci a toi
 
Z

zouille

Guest
bon
j'ai encore essayer mais rien a faire , j'ai tout tenté mais rien ne fonctionne.

Le code seul fonctionne bien , mais impossible de l'incruster ni faire appel a la fonction

Si qqun a une idee , je suis preneur

Merci a tous
 

porcinet82

XLDnaute Barbatruc
Salut zouille,

Je viens de jeter un oeil a ton fichier, et effectivement, il ne reconnait pas la ligne selection.End(xlUp).Select, le s de selection est en minuscule.

J'ai donc essayer d'executer le cod dans un autre classeur et là pas de problème. Je ne vois pas du tout ou se trouve l'erreur.

Désolé, mais je crois que tu va devoir faire appel à quelqu'un de plus expérimenté que moi.

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 418
Messages
2 088 256
Membres
103 793
dernier inscrit
letocost