Macro couper/coller à la suite dans autre feuille
Bonjour à tous,
Je souhaite créer une macro de couper/coller à la suite pour un fichier de demande d'intervention technique en hôtel. Vous aurez plus d'info dans l'exemple ci-joint.
Merci de votre aide
https://www.excel-pratique.com/~files/doc2/exemple_classeur.xls
Bonjour SD,
Voici une solution par macro :
https://www.excel-pratique.com/~files/doc2/exemple_classeur_V1.xls
Cette macro marche si la structure est identique au fichier que tu as joint.
Sinon, il faudra l'adapter au fichier de base.
A+
Bonjour,
Vba-New, si je peux me permettre...ta macro peut être modifiée comme suit
Sub envoiDemande()
'macro par vba-new - par Dpour SD le 07/07/09
'Modification Dan le 07/07/09
'http://forum.excel-pratique.com/viewtopic.php?t=12265
Dim debLig As Integer
With Sheets("Feuille2")
debLig = .Range("A65536").End(xlUp).Row + 1
.Cells(debLig, 1) = Format(Sheets("demande_intervention").Cells(3, 3), "dd/mm/yy")
.Cells(debLig, 2) = Format(Sheets("demande_intervention").Cells(4, 3), "hh:mm")
.Cells(debLig, 3) = Sheets("demande_intervention").Cells(5, 3)
.Cells(debLig, 4) = Sheets("demande_intervention").Cells(6, 3)
.Cells(debLig, 5) = Sheets("demande_intervention").Cells(7, 3)
.Cells(debLig, 6) = Sheets("demande_intervention").Cells(8, 3)
.Cells(debLig, 7) = debLig - 1
End With
Sheets("demande_intervention").Range("C3:C8").ClearContents
End SubLe code est plus court et n'utilise une seule variable.
Dans ta macro tu avais omis de déclarer une série de variable (Date1, etc...).
Voili voilou.
Amicalement
Dan
Bonjour Dan,
Bien sûr que tu peux te permettre! Merci même d'avoir corriger le code! Ça me permet de voir ce qu'il faut faire ou ne pas faire.
Vu que j'ai commencé le VBA ya pas longtemps, je peux faire des macros qui marchent mais qui ne sont pas du tout optimisées!
Dans ta macro tu avais omis de déclarer une série de variable (Date1, etc...).
Je l'ai fait exprès! En fait, VBE m'obligeait à déclarer les variables (avec Options Explicit) mais j'en avais trop à déclarer!
Alors j'ai supprimé cette 'option'!
Merci encore pour la correction Dan.
A+
Merci à vous deux pour votre rapidité et votre efficacité, le code fonctionne parfaitement...
J'aurai néanmoins une petite demande supplémentaire à vous faire... serait-il possible que au lieu de s'ajouter à la suite des lignes de la feuille2, les informations de la nouvelle demande se placent au dessus de celles déjà enregistrées, de façon à se que les plus récentes soient en haut du tableau?
Voici le code que j'utilise: (BADO=feuille2)
Sub envoiDemande()
'macro par vba-new pour SD le 07/07/09
'http://forum.excel-pratique.com/viewtopic.php?t=12265
Dim debLig As Integer
debLig = Sheets("BADO").Range("A65536").End(xlUp).Row + 1
With Sheets("Demande")
Date1 = .Cells(4, 4)
heure1 = .Cells(6, 4)
lieu1 = .Cells(8, 4)
Description1 = .Cells(10, 4)
Donneur_ordre = .Cells(12, 4)
Dest = .Cells(14, 4)
Range("D4").Select
Selection.ClearContents
Range("D6").Select
Selection.ClearContents
Range("D8").Select
Selection.ClearContents
Range("D10").Select
Selection.ClearContents
Range("D12").Select
Selection.ClearContents
Range("D14").Select
Selection.ClearContents
End With
With Sheets("BADO")
.Cells(debLig, 1) = Date1
.Cells(debLig, 1).NumberFormatLocal = "jj/mm/aa"
.Cells(debLig, 2) = heure1
.Cells(debLig, 2).NumberFormatLocal = "hh:mm"
.Cells(debLig, 3) = lieu1
.Cells(debLig, 4) = Description1
.Cells(debLig, 5) = Donneur_ordre
.Cells(debLig, 6) = Dest
.Cells(debLig, 7) = debLig - 1
End With
End Sub
Merci bcp^^
SDre,
Vois le code ci-après à placer à la place de la macro actuellement dans ton fichier.
Sub envoiDemande()
'macro par vba-new - par Dpour SD le 07/07/09
'Modification Dan le 07/07/09
'http://forum.excel-pratique.com/viewtopic.php?t=12265
Dim lig As Integer
With Sheets("BADO")
lig = 2
.Rows(lig).EntireRow.Insert
.Rows(lig).Interior.ColorIndex = xlAutomatic 'None
.Cells(lig, 1) = Format(Sheets("demande_intervention").Cells(3, 3), "mm/dd/yy")
.Cells(lig, 2) = Format(Sheets("demande_intervention").Cells(4, 3), "hh:mm")
.Cells(lig, 3) = Sheets("demande_intervention").Cells(5, 3)
.Cells(lig, 4) = Sheets("demande_intervention").Cells(6, 3)
.Cells(lig, 5) = Sheets("demande_intervention").Cells(7, 3)
.Cells(lig, 6) = Sheets("demande_intervention").Cells(8, 3)
.Cells(lig, 7) = lig - 1
End With
Sheets("demande_intervention").Range("C3:C8").ClearContents
End SubJ'ai remplacé Feuille 2 par BADO. Vérifie que le nom de ta feuille est bien en majuscules.
Dan
Merci Dan,
sans vouloir abuser de ta gentillesse, les numéros de séries ne se génèrent plus automatiquement (1 à chaque fois)..aurais-tu une solution à me proposer??
re,
J'ai repris l'ancien code et effectué un tri.
Remplace ton code actuel par celui-ci dessous
Sub envoiDemande()
'macro par vba-new - par Dpour SD le 07/07/09
'Modification Dan le 07/07/09
'http://forum.excel-pratique.com/viewtopic.php?t=12265
Dim debLig As Integer
Application.ScreenUpdating = False
With Sheets("BADO")
debLig = .Range("A65536").End(xlUp).Row + 1
.Cells(debLig, 1) = Format(Sheets("demande_intervention").Cells(3, 3), "mm/dd/yy")
.Cells(debLig, 2) = Format(Sheets("demande_intervention").Cells(4, 3), "hh:mm")
.Cells(debLig, 3) = Sheets("demande_intervention").Cells(5, 3)
.Cells(debLig, 4) = Sheets("demande_intervention").Cells(6, 3)
.Cells(debLig, 5) = Sheets("demande_intervention").Cells(7, 3)
.Cells(debLig, 6) = Sheets("demande_intervention").Cells(8, 3)
.Cells(debLig, 7) = debLig - 1
.Activate
.Range("A2:G" & debLig).Sort Key1:=Range("G2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Sheets("demande_intervention").Range("C3:C8").ClearContents
End SubUne fois exécutée, la feuille 2 sera activée.
Si cela t'embête on peut aussi effectuer le tri uniquement à l'activation de la feuille.
Amicalement
Dan
PS : Si ton pb est terminé, n'oublie pas de mettre RESOLU sur le fil. explications ici -> https://forum.excel-pratique.com/viewtopic.php?t=13
Merci de ta particiaption.
Magnifique, je te remercie. Je suis un peu dégouté de ne pas comprendre tout le code mais je garde l'espoir de pouvoir faire ce genre de chose tout seul un jour...je pourrais alors aussi rendre service à des novices^^
Merci encore de ton attention, a+, SD