Copy
Résolu
emmjacq
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Voilà, je suis plus que débutant en vba et je souhaiterais (fichier excel de gestion commandes/stocks) pouvoir copier une ligne de la feuil1 (ligne que je viens de taper) vers la feuille stocks après validation par userform.
Voilà ce que j'ai tapé ...
Private Sub OptionButton3_Click()
If Controls("OptionButton3").Value = True Then
Rows(Worksheets.Cells(.Rows.Count, 1).End(xlUp).Row).Copy _
Destination:=Rows(Sheets("feuil1").UsedRange.Rows.Count) + 1
End If
Unload UserForm4
et ça plante...lol...
Please help me!!!
Voilà, je suis plus que débutant en vba et je souhaiterais (fichier excel de gestion commandes/stocks) pouvoir copier une ligne de la feuil1 (ligne que je viens de taper) vers la feuille stocks après validation par userform.
Voilà ce que j'ai tapé ...
Private Sub OptionButton3_Click()
If Controls("OptionButton3").Value = True Then
Rows(Worksheets.Cells(.Rows.Count, 1).End(xlUp).Row).Copy _
Destination:=Rows(Sheets("feuil1").UsedRange.Rows.Count) + 1
End If
Unload UserForm4
et ça plante...lol...
Please help me!!!
A voir également:
- Copy
- Exact audio copy - Télécharger - Conversion & Extraction
- Super copy - Télécharger - Gestion de fichiers
- Copy protect - Télécharger - Chiffrement
- Total copy - Télécharger - Utilitaires
- Copy trans manager - Télécharger - Lecture & Playlists
10 réponses
Bonjour,
On va y aller par étape pour que tu comprennes bien.
De plus, essaie d'utiliser :
- toujours la même syntaxe (ici pourquoi utiliser .Rows.Count pour le copy et UsedRange.Rows.Count pour le Paste sans raison bien précise? )
- des variables ! Elles sont faites pour cela et ne sont pas "mangeuses" de mémoire.
Pour faire la même procédure, j'aurais utilisé 2 variables de type Long pour déterminer quels sont les numéros des dernières lignes de mes deux feuilles et j'aurais copié/collé les lignes grâce à ces numéros :
C'est une procédure qui se veux explicite. Lorsque, dans 3 ans et demi, tu reviendras sur ton code, il te semblera clair.
Mais bon, il est vrai que tu peux facilement le remplacer par :
Je n'ai pas testé ces codes, alors testes et dis nous...
On va y aller par étape pour que tu comprennes bien.
If Controls("OptionButton3").Value = True ThenCe n'est pas une erreur en soit, mais une simplification que tu peux te permettre : le "Controls" est ici superflu. VBA, lorsque tu inscrit "OptionButton3 dans ton code, sait de quoi tu parles. A remplacer donc par :
If OptionButton3.Value = True Then
Rows(Worksheets.Cells(.Rows.Count, 1).End(xlUp).Row).Copy _Ici VBA se demande : "C'est quoi Worksheets"? Je connais Worksheets("Feuil1"), Worksheets("Feuil2"), Sheets("Feuil3") voire Sheets(4), mais Worksheet tout seul...
Destination:=Rows(Sheets("feuil1").UsedRange.Rows.Count) + 1Idem, le "Destination:=" est superflu.
De plus, essaie d'utiliser :
- toujours la même syntaxe (ici pourquoi utiliser .Rows.Count pour le copy et UsedRange.Rows.Count pour le Paste sans raison bien précise? )
- des variables ! Elles sont faites pour cela et ne sont pas "mangeuses" de mémoire.
Pour faire la même procédure, j'aurais utilisé 2 variables de type Long pour déterminer quels sont les numéros des dernières lignes de mes deux feuilles et j'aurais copié/collé les lignes grâce à ces numéros :
Dim DernLignFeuil2 As Long, DernLignFeuil1 As Long If OptionButton3.Value = True Then DernLignFeuil2 = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row DernLignFeuil1 = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1 Sheets("Feuil2").Rows(DernLignFeuil2).Copy Sheets("Feuil1").Rows(DernLignFeuil1) End If
C'est une procédure qui se veux explicite. Lorsque, dans 3 ans et demi, tu reviendras sur ton code, il te semblera clair.
Mais bon, il est vrai que tu peux facilement le remplacer par :
If OptionButton3.Value = True Then Sheets("Feuil2").Rows(Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row).Copy Sheets("Feuil1").Rows(Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1) End If
Je n'ai pas testé ces codes, alors testes et dis nous...
Encore moi....
Toujours pas la solution après de multiples essais et tentatives...
Pour complèter mon problème :
*tableau source : début en ligne B11 fin en ligne B39
*tableau cible : début en ligne D63 fin en ligne D382
Avec le programme proposé (merci encore pour la rapidité) la ligne copiée n'est pas la bonne et pas a la bonne cible...sniff...
Alors si vous pouviez m'aider...
Merci
Toujours pas la solution après de multiples essais et tentatives...
Pour complèter mon problème :
*tableau source : début en ligne B11 fin en ligne B39
*tableau cible : début en ligne D63 fin en ligne D382
Avec le programme proposé (merci encore pour la rapidité) la ligne copiée n'est pas la bonne et pas a la bonne cible...sniff...
Alors si vous pouviez m'aider...
Merci
Merci...
Nom de la feuille source :Feuil1
Nom de la feuille destination :Pièces en attente de classement
Emplacement de la plage à copier : Range("B11:E11"))
Emplacement de la plage ou coller : Range("D13:G13"))
Voilà...
Merci
Nom de la feuille source :Feuil1
Nom de la feuille destination :Pièces en attente de classement
Emplacement de la plage à copier : Range("B11:E11"))
Emplacement de la plage ou coller : Range("D13:G13"))
Voilà...
Merci
If OptionButton3.Value = True Then Sheets("Feuil1").Range("B11:E11").Copy Sheets("Pièces en attente de classement ").Range("D13") End If
!!! copiera systématiquement la ligne 11 en ligne 13
si tu le relance x fois, les x fois il va copier la ligne 11 et écraser les données en ligne 13
Rem : il y a toujours la possibilité d'insérer une ligne par VBA pour ne pas écraser la ligne 13....
Encore Merci..
Mais ce que je souhaiterais c'est que je puisse copier ensuite la ligne 12 en ligne 14 etc... etc...
Sachant que feuil1 est un bon de commande et que source est mon stock en attente.
Mon bon de commande revient à ligne 11 régulièrement mais au contraire mon stock doit tenir compte des lignes ajoutées.
Ton premier exemple était plus en phase avec ma recherche.
1000 excuses pour la méprise.
@+
Mais ce que je souhaiterais c'est que je puisse copier ensuite la ligne 12 en ligne 14 etc... etc...
Sachant que feuil1 est un bon de commande et que source est mon stock en attente.
Mon bon de commande revient à ligne 11 régulièrement mais au contraire mon stock doit tenir compte des lignes ajoutées.
Ton premier exemple était plus en phase avec ma recherche.
1000 excuses pour la méprise.
@+
Que l'on soit bien clair......
Ce que tu fais :
1- tu complète x lignes de la feuille "Feuil1" à partir de la ligne 11 jusqu'à la ... dernière ligne saisie,
2- tu cliques sur ton OptionButton3 pour couper ces lignes et les coller en feuille ("Pièces en attente de classement" après la dernière ligne saisie.
C'est bien ça?
Sicépaçadile!! (Si c'est pas ça, dis le...)
Ce que tu fais :
1- tu complète x lignes de la feuille "Feuil1" à partir de la ligne 11 jusqu'à la ... dernière ligne saisie,
2- tu cliques sur ton OptionButton3 pour couper ces lignes et les coller en feuille ("Pièces en attente de classement" après la dernière ligne saisie.
C'est bien ça?
Sicépaçadile!! (Si c'est pas ça, dis le...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Exactement...
Ma feuil1 est mon bon de commande qui alimente mon stock.
Mon bon de commande contient au maximum 15 lignes.
Mon stock lui evoluera à chaque ligne ajoutée par MES bons de commande.
@+
Ma feuil1 est mon bon de commande qui alimente mon stock.
Mon bon de commande contient au maximum 15 lignes.
Mon stock lui evoluera à chaque ligne ajoutée par MES bons de commande.
@+
Hum...
Tu crois pas que tu aurais du commencer par expliquer ça????
Bon! Puisque tu as l'air nouveau par ici, sympa et poli, essaye ceci (je n'ai pas testé!) :
Tu crois pas que tu aurais du commencer par expliquer ça????
Bon! Puisque tu as l'air nouveau par ici, sympa et poli, essaye ceci (je n'ai pas testé!) :
Dim DrLig As Long If OptionButton3.Value = True Then With Sheets("Pièces en attente de classement ") DrLig = .Range("D" & Rows.Count).End(xlUp).Row + 1 End With With Sheets("Feuil1") .Range("B11:E26").Copy Sheets("Pièces en attente de classement ").Range("D" & DrLig) ' .Range("B11:E26").Clear 'si tu veux effacer les données copiées, enlève l'apostrophe End With End If
je teste et je vois....
En attendant merci pour ton aide et désolé pour mon manque d'explications pour la compréhention...
J'y travaille...
@+
En attendant merci pour ton aide et désolé pour mon manque d'explications pour la compréhention...
J'y travaille...
@+
Encore moi...
Bon la solution est presque là...
Le petit souci...si je peux me permettre, c'est que je commence à remplir montableau source par le bas....
Pas trop trop... ne pas confondre avec trot trot (pour ceux qui ont des enfants...)
Merci de votre aide
@+
Bon la solution est presque là...
Le petit souci...si je peux me permettre, c'est que je commence à remplir montableau source par le bas....
Pas trop trop... ne pas confondre avec trot trot (pour ceux qui ont des enfants...)
Merci de votre aide
@+
Alors...
mon bon de commande commence en ligne (B11,E11) et se termine en ligne (B26,E26).
Mais je ne renseigne pas systématiquement ttes les lignes... Il peut avoir que 1 ligne...
Mon stock commence en ligne (D13,G13) et se termine au maximum de Excel...
Mais après chaque commande je dois ajouter ma nouvelle ligne de stock après la derniere ligne renseignée par la commande précedante...
Wahou... Pas simple...
@++
mon bon de commande commence en ligne (B11,E11) et se termine en ligne (B26,E26).
Mais je ne renseigne pas systématiquement ttes les lignes... Il peut avoir que 1 ligne...
Mon stock commence en ligne (D13,G13) et se termine au maximum de Excel...
Mais après chaque commande je dois ajouter ma nouvelle ligne de stock après la derniere ligne renseignée par la commande précedante...
Wahou... Pas simple...
@++
Je ne comprends donc plus rien...
Tu dis :
c'est que je commence à remplir montableau source par le bas
mon bon de commande commence en ligne (B11,E11)
Tu parles de tableau source, de bon de commande de stock... C'est incompréhensible!
Soit clair.
Donc mon conseil :
1- respire un grand coup,
2- va aux toilettes (sisi c'est lemoment!)
3- reviens, respire à nouveau
4- réfléchis et dis nous EXACTEMENT ce que tu fais et ce que tu veux faire automatiquement!!!
Tu dis :
c'est que je commence à remplir montableau source par le bas
mon bon de commande commence en ligne (B11,E11)
Tu parles de tableau source, de bon de commande de stock... C'est incompréhensible!
Soit clair.
Donc mon conseil :
1- respire un grand coup,
2- va aux toilettes (sisi c'est lemoment!)
3- reviens, respire à nouveau
4- réfléchis et dis nous EXACTEMENT ce que tu fais et ce que tu veux faire automatiquement!!!
M E R C I !!!!!!
La victoire était au bout du chemin!!!!
Alors 1000 merci pour ton aide!!!!
Formidable.
Top.
Ca fonctionne.
Merci encore pour l'aide.
@++ pour de nouvelles aventures
La victoire était au bout du chemin!!!!
Alors 1000 merci pour ton aide!!!!
Formidable.
Top.
Ca fonctionne.
Merci encore pour l'aide.
@++ pour de nouvelles aventures
Certes...
Mais l'erreur était de moi.
Problème, d'espace dans la formule, de copier coller et encore plus problème dans mon tableau.
Il y avait une ligne avec un "filtre automatique"... donc le départ n'était pas bon.
C'est pourquoi, comme l'erreur était de mon côté j'ai préféré etre humble...
Merci et a tres bientot...
Mais l'erreur était de moi.
Problème, d'espace dans la formule, de copier coller et encore plus problème dans mon tableau.
Il y avait une ligne avec un "filtre automatique"... donc le départ n'était pas bon.
C'est pourquoi, comme l'erreur était de mon côté j'ai préféré etre humble...
Merci et a tres bientot...