Copy
Résolu/Fermé
emmjacq
-
22 sept. 2011 à 08:54
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 - 23 sept. 2011 à 08:36
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 - 23 sept. 2011 à 08:36
A voir également:
- Copy
- Super copy - Télécharger - Gestion de fichiers
- Carbon copy cloner - Télécharger - Sauvegarde
- Copy bat ✓ - Forum Programmation
- Copy trans - Télécharger - Sonneries
- Touch copy - Télécharger - Sonneries
10 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 09:12
22 sept. 2011 à 09:12
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 Then Ce 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) + 1 Idem, 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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 12:36
22 sept. 2011 à 12:36
Alors dis moi tout :
Nom de la feuille source, (exemple : Feuil1)
Nom de la feuille destination, (exemple : Feuil3)
Emplacement de la plage à copier (exemple : Range("B39:G39"))
Emplacement de la plage ou coller... (exemple : Range("D382:I382"))
Nom de la feuille source, (exemple : Feuil1)
Nom de la feuille destination, (exemple : Feuil3)
Emplacement de la plage à copier (exemple : Range("B39:G39"))
Emplacement de la plage ou coller... (exemple : Range("D382:I382"))
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
Modifié par pijaku le 22/09/2011 à 13:16
Modifié par pijaku le 22/09/2011 à 13:16
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.
@+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 13:33
22 sept. 2011 à 13:33
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.
@+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 13:43
22 sept. 2011 à 13:43
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...
@+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 13:50
22 sept. 2011 à 13:50
Pas de souci.
Teste le code dans tous les sens et reviens nous dire...
A+
Teste le code dans tous les sens et reviens nous dire...
A+
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
@+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 15:13
22 sept. 2011 à 15:13
Tu commences en B26 pour finir quelque part entre B26 et B11?
La colonne B, à ce moment là, est -elle systématiquement complétée? Pour toutes ces lignes (de B26 à B24 par exemple)?
La colonne B, à ce moment là, est -elle systématiquement complétée? Pour toutes ces lignes (de B26 à B24 par exemple)?
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...
@++
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 15:35
22 sept. 2011 à 15:35
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
22 sept. 2011 à 15:48
22 sept. 2011 à 15:48
Et bien ... de rien!
On ne sait pas :
- ce qui n'allait pas,
- comment tu l'as résolu...
Mais bon...
A+
On ne sait pas :
- ce qui n'allait pas,
- comment tu l'as résolu...
Mais bon...
A+
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...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
23 sept. 2011 à 08:36
23 sept. 2011 à 08:36
Salut,
Merci de ton retour.
En fait, sur un forum il convient de dire ce qui n'a pas été, pourquoi et comment afin d'aiguiller au mieux les futurs visiteurs de ce sujet.
Donc merci à toi et à bientôt.
Merci de ton retour.
En fait, sur un forum il convient de dire ce qui n'a pas été, pourquoi et comment afin d'aiguiller au mieux les futurs visiteurs de ce sujet.
Donc merci à toi et à bientôt.