XL 2010 copier Coller VBA

benrazzouk

XLDnaute Nouveau
Bonjour tous le monde :(

J'ai un souci sur mon petit programme, je souhaite copier une plage de cellules et la coller dans la derniere ligne de mon tableau, et comme à chaque fois je dois rajouter le même tableau avec les mêmes couleurs et les mêmes focrmules, je veux créer un bouton qui m'assurera cette fonction avec une Macro deriére . mais j'ai message d'erreur au lancement de la macro, je crois que sa proviens de la ligne 7, et voila le programme Merci d'avance pour vos répenses;)

Code:
Public Sub Copy1()
Dim derLig As Long
derLig = 9
While Cells(derLig, 4) <> ""
       derLig = derLig + 13
Wend
Worksheets(1).Range("D9:L21").Copy_
Destination:=Worksheets(1).Cells(derLig, 4)
End Sub
 

vgendron

XLDnaute Barbatruc
Bonjour

pourquoi ecrire une ligne de commande sur deux lignes..??
je n'ai jamais trouvé ca plus clair. et en plus. source d'erreur
VB:
Public Sub Copy1()
Dim derLig As Long
derLig = 9
While Cells(derLig, 4) <> ""
       derLig = derLig + 13
Wend
Worksheets(1).Range("D9:L21").Copy Destination:=Worksheets(1).Cells(derLig, 4)
End Sub
ou alors.. si tu y tiens vraiment. il faut mettre le Backspace au bon endroit.. avec un espace avant
VB:
Public Sub Copy1()
Dim derLig As Long
derLig = 9
While Cells(derLig, 4) <> ""
       derLig = derLig + 13
Wend
Worksheets(1).Range("D9:L21").Copy _
Destination:=Worksheets(1).Cells(derLig, 4)
End Sub
 

benrazzouk

XLDnaute Nouveau
meric pour ta repense, mais j'avais essayé les deux forme et sa ne marche pas, et la d'un coup sa marche, mais j'ai essayer de refaire la même manipe (car je dois avoir deux boutons) et j'ai tomber dans le meme probleme. je vais joint une photo sa serai plus claire. merci d'avance
VB:
Public Sub Copy2()
Dim dernLig As Long
dernLig = 9
While Cells(dernLig, 3) <> ""
       dernLig = dernLig + 13
Wend
Worksheets(1).Range("C9:L21").Copy Destination:=Worksheets(1).Cells(dernLig, 3)
End Sub

upload_2017-7-27_13-20-36.png
 

vgendron

XLDnaute Barbatruc
on y voit déjà plus clair..
déjà.. dans l'exemple envoyé.. plusieurs problèmes
1) ta macro détermine la dernière ligne=22 ---> moi je vois 35
2) ta macro veut copier coller la zone C9:L21
sauf que. C9 est fusionnée jusquà C34 ----> bug... (ahhhh.. les cellules fusionnées et VBA ne s'aiment pas)
3) dès que la macro fait un copier. ca lance automatiquement tes macro TOTALCOUTT1....

essai ce code pour tes deux macros
VB:
Public Sub Copy1() 'insérer numéro de série
Dim derLig As Long
derLig = Range("E" & Rows.Count).End(xlUp).Row + 1
ActiveSheet.Range("D9:L21").Copy Destination:=Worksheets(1).Cells(derLig, 4)
Range("C" & derLig - 1).Resize(14, 1).Merge 'on merge la Localisation avec le nouveau numéro de Série
End Sub


Public Sub Copy2() 'insérer Localisation
Application.EnableEvents = False
Dim derLig As Long
derLig = Range("E" & Rows.Count).End(xlUp).Row + 1
Worksheets(1).Range("C9:L21").Copy Destination:=Worksheets(1).Cells(derLig, 3)
Application.EnableEvents = True
End Sub

PS: tu peux mettre toutes les macros dans le meme module
 

benrazzouk

XLDnaute Nouveau
Merci beaucoup vgendron, mtn j'ai un autre problème, si un autre fichier excel est ouvert en même temps que celui la, mes Macro modifie aussi les eutres fichier excel.
et pour copy1() j'aurai aimé que sa sois avec incersion des ligne complet, comme sa, quand je rajoute une reference il sera dans le même localisation, est ce que cele et possible.
Je vais joint le nouveau fichier,
PS: J'ai rajouté mes macro à la barre d'outil
 

Pièces jointes

  • CLEMENTfinal.xlsm
    43.2 KB · Affichages: 15

vgendron

XLDnaute Barbatruc
entre temps, j'ai modifié tes macros...
une seule macro pour calculer tes totaux
et lorsqu'on insert un N° de série.. le numéro de localisation est ajusté - cad: la cellule fusionnée colonne C est fusionnée jusqu'au bout
lorsque tu inserts une localisation, ca te recrée une localisation avec un nouveau "numéro"

je viens de voir dans ton nouveau fichier que tu avais créé un "modèle"..
je regarde
en attendant. teste cette version et regarde le code
 

Pièces jointes

  • CLEMENTfinal Rev2.xlsm
    38.2 KB · Affichages: 23

benrazzouk

XLDnaute Nouveau
Ok, tu ma fais quelque chose de vraiment pro, Merci :)
J'ai modifier sur modul calcule, j'ai mis 5 à la place de 4 ''ces des celulles fusionnées"
Et j'ai une erreur de type.
PS: les reference c'est des grandes serie de nombres et de chifres et les localisations sont des adresses postal ou des noms d'entreprises.....
VB:
.Range("N5") = CopiesT1
    .Range("O5") = CopiesT2
    .Range("P5") = CopiesT3
    .Range("Q5") = CopiesT4
 

vgendron

XLDnaute Barbatruc
hmmm
effectivement.. il faut se mettre en ligne 5 pour etre sur Total Maintenance.
par contre, tu as du modifier autre chose par erreur. parce que je viens de le faire et pas de bug..

VB:
Sub CalculTotaux()
Application.EnableEvents = False
With ActiveSheet
    FinTab = .Range("E" & .Rows.Count).End(xlUp).Row + 1
'Remplissage Factures 1 a 4
    For i = 9 To FinTab Step 13
        FactureT1 = FactureT1 + .Cells(i, 8)
        FactureT2 = FactureT2 + .Cells(i + 1, 8)
        FactureT3 = FactureT3 + .Cells(i + 2, 8)
        FactureT4 = FactureT4 + .Cells(i + 3, 8)
    Next i
   
'Remplissage Loyers 1 a 4
    For i = 13 To FinTab Step 13
        LoyersT1 = LoyersT1 + .Cells(i, 8)
        LoyersT2 = LoyersT2 + .Cells(i + 1, 8)
        LoyersT3 = LoyersT3 + .Cells(i + 2, 8)
        LoyersT4 = LoyersT4 + .Cells(i + 3, 8)
    Next i

'Remplissage COPIES 1 a 4
    For i = 17 To FinTab Step 13
        CopiesT1 = CopiesT1 + .Cells(i, 8)
        CopiesT2 = CopiesT2 + .Cells(i + 1, 8)
        CopiesT3 = CopiesT3 + .Cells(i + 2, 8)
        CopiesT4 = CopiesT4 + .Cells(i + 3, 8)
    Next i

    .Range("N3") = LoyersT1
    .Range("O3") = LoyersT2
    .Range("P3") = LoyersT3
    .Range("Q3") = LoyersT4
   
    .Range("N5") = CopiesT1
    .Range("O5") = CopiesT2
    .Range("P5") = CopiesT3
    .Range("Q5") = CopiesT4
End With

Application.EnableEvents = True
End Sub
 

benrazzouk

XLDnaute Nouveau
cliques sur ajouter un N° de serie, essaye d'ecrire 1gt dans la boite de dialogue par exemple, tu vas avoir une erreur de type, et si tu tape un nombre trop grand tu va avoir une erreur deppassement de capacité, pour inserer une localisation si j'ai ecrie "nanterre" par exemeple dans la boite de dialogue qui saffiche, j'ai une erreur d'incompatibilité :eek:o_O
 

vgendron

XLDnaute Barbatruc
ha ok. rien à voir avec le fait d'avoir changé 4 en 5...

c'est juste que je "forçais" la saisie d'un numéro - puisque je ne voyais que ca dans l'exemple
suffit de supprimer les Cint()..
VB:
Public Sub Copy1() 'insérer numéro de série
Application.EnableEvents = False

NumSérie = Application.InputBox("saisissez un numéro de série")
Set Modèle = Sheets("Modèle").Range("B16:J28")

Dim derLig As Long
With ActiveSheet
    derLig = .Range("E" & .Rows.Count).End(xlUp).Row + 1
    Modèle.Copy Destination:=.Cells(derLig, 4)
    .Cells(derLig, 4) = NumSérie
    .Range("C" & derLig - 1).Resize(14, 1).Merge 'on merge la Localisation avec le nouveau numéro de Série
    CalculTotaux 'on relance le calcul
End With
Application.EnableEvents = True
End Sub


Public Sub Copy2() 'insérer Localisation
Application.EnableEvents = False

NumLocalisation = Application.InputBox("saisissez un numéro de Localisation")
NumSérie = Application.InputBox("saisissez un numéro de série")

Set Modèle = Sheets("Modèle").Range("B2:K14")

Dim derLig As Long
With ActiveSheet
    derLig = .Range("E" & .Rows.Count).End(xlUp).Row + 1
    Modèle.Copy Destination:=.Cells(derLig, 3)
    .Cells(derLig, 3) = NumLocalisation
    .Cells(derLig, 4) = NumSérie
    CalculTotaux 'on relance le calcul
End With
Application.EnableEvents = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 115
Messages
2 085 453
Membres
102 890
dernier inscrit
selkis