Fonction copier/coller/couper

Bonjour à tous,

cela fait quelque temps que je cherche mais en vain, un code permettant de :

Dès le click sur un bouton

De copier ou couper la ligne non vide d'une feuille ou le userform est actif donc mon classeur actif ( nom du classeur "test" nom de la feuille "erreur" )

Je souhaite après la coller dans un autre classeur ( nom classeur "Erreurs" nom de la feuille "feuil1") dans la feuille mais dans la dernière ligne non vide

Je souhaite vide la ligne de la feuille erreur du classeur test

Puis enregistrer les 2 classeurs

Et tout fermer

voici le code que j'ai essayer mais cela ne fonctionne pas :

Private Sub CommandButton1_Click() 'quitter

Dim ligne As Long
Sheets("Erreur").Select 'selectionner la feuille
ligne = Range("B65536").End(xlUp).Row + 1 'se mettre dans ligne de la colonne B dans la premiere case vide
Range("B" & ligne).Value = TextBox5.Value 'mettre la valeur dans la cellule
Range("C" & ligne).Value = ComboBox2.Value
Range("D" & ligne).Value = ComboBox5.Value
Range("E" & ligne).Value = TextBox4.Value
Range("F" & ligne).Value = ComboBox4.Value
Range("G" & ligne).Value = ComboBox7.Value
Range("H" & ligne).Value = ComboBox3.Value
Range("I" & ligne).Value = TextBox2.Value
Range("J" & ligne).Value = ComboBox1.Value
Range("K" & ligne).Value = ComboBox6.Value
Range("L" & ligne).Value = TextBox3.Value

Dim wk As Workbook
Dim b As Long, a As Long
Set wk = Workbooks.Open(Filename:="C:\Users\mickael.deflorenne\Desktop\PROJETS\Projet informatique\Programme\Erreurs.xls")

a = Workbooks("Erreurs").worsheets("feuil1").Range("B" & Cells.Rows.Count).End(x1up).Row + 1

b = Worksheets("Erreur").Range("B" & Cells.Rows.Count).End(x1up).Row
If b = 1 Then Exit Sub
Worksheets("Erreur").Range("B2:L" & b).Copy Destination:=wk.Worksheets("feuil1").Range("A" & a)

Application.DisplayAlerts = False 'ne pas avoir le message voulez vous enregistre
ActiveWorkbook.Save 'enregistrer
Application.Quit 'quitter

end sub

Merci de votre aide

Mika

Bonjour,

Honnêtement !

Pas d'utilisation des balises Code pour citer du code !

Code non indenté !

Dès la 3e ligne on trouve un Select !

Expressions évidemment non qualifiées... !

Longue énumération d'affectations à des cellules qui se suivent... (pas d'utilisation de boucles...)

Pas d'utilisation de tableau là où ça pourrait améliorer.

Des déclarations au milieu du code exécutable !

Utilisation triviale d'un copier-coller de ce qu'on vient d'affecter juste avant !

Cela fait vraiment beaucoup trop pour me donner envie de m'y pencher.

Désolé pour les balises pour le code

et puis je ne suis pas un pro en vba alors oui je fais comme je peux et le code est peut etre pas simplifié au maximum

Bonjour,

Une réécriture de ton code, à titre indicatif, sous réserve de problèmes qui ne peuvent apparaître en l'absence de fichier permettant de mieux cerner le contexte, les types de données en présence, etc.

Private Sub CommandButton1_Click()
    Dim erreur, ln&, ch$, wk As Workbook
    ch = "C:\Users\mickael.deflorenne\Desktop\PROJETS\Projet informatique\Programme\Erreurs.xls"
    erreur = Array(TextBox5.Value, ComboBox2.Value, ComboBox5.Value, TextBox4.Value, ComboBox4.Value, _
     ComboBox7.Value, ComboBox3.Value, TextBox2.Value, ComboBox1.Value, ComboBox6.Value, TextBox3.Value)
    With Worksheets("Erreur")
        ln = .Range("B" & .Rows.Count).End(xlUp).Row + 1
        .Range("B" & ln).Resize(, 11).Value = erreur
    End With
    Set wk = Workbooks.Open(ch)
    With wk.Worksheets(1)
        ln = .Range("B" & .Rows.Count).End(xlUp).Row + 1
        .Range("B" & ln).Resize(, 11).Value = erreur
    End With
    wk.Close True
    ThisWorkbook.Close True
End Sub

Pour ma part, je ne fermerai pas le classeur appelant avant d'avoir proprement fermé le Userform...

Cordialement.

Rechercher des sujets similaires à "fonction copier coller couper"