Copier coller une colonne d'une feuille vers une autre
Résolu
benjamin
-
benjamin -
benjamin -
Bonjour,
Bonjour les amis ! je viens encore vers vous pour sous soumettre la résolution d'un problème.
J'ai deux classeurs ANN_LEG et TAMP.Xlsx
Dans la feuil1 de ANN_LEG, la première ligne est réservée aux titres de champs. De même que la première ligne de la feuille1 de TAMP.xlsx. Mon travail consiste à copier-coller une colonne donnée de la feuille 1 de TAMP.xlsx dans l'autre feuille du classeur ANN_LEG.xlsx
Voici comment ca doit se passer : à chaque fois, je saisi dans un inputbox un champ de titre (par exemple Achat 2014). L'application doit d'abord chercher si Achat 2014 GNF existe dans TAMP.xlsx et si Prév Achat 2014 existe dans la feuille du classeur ANN_LEG.xlsx et copier coller toute cette colonne dans la feuille du classeur ANN_LEG.xlsx
Après chaque opération, un nouveau, msgbox doit apparaitre et me demander si je désire continuer. Si Oui, apparaitre un inputbox pour y renseigner un titre de champs. Sinon, l'opération est terminée.
Pour le moment, j'essaie une programmation sans msgbox. C'est-à-dire pas de message pour détecter ma volonté de continuer. Après tout, je suis confronté à un problème de boucle folle. Je saisi Achat 2014; Or Achat 2014 GNF et Prév Achat 2014 sont des lignes de champs existant dans les feuilles. Normalement l'opération de copie coller devrait être exécutée mais hélas !! C'est une boucle infinie (l'input apparait après avoir renseigné Achat 2014).
Aidez-moi s'il vous plait. Voire même me permettre d'afficher un nouveau msgbox après l'opération de copie collée pour me demander si je désire continuer ou pas (comme ci-dessus expliquée).
Voici mon code
Sub cop ()
Dim trouve1 as range
Dim trouve2 as range
Do while trouve1 is nothing or trouve2 is nothing
Bte=inputbox("Veuillez renseigner un champs de titre! , '' & chr(10) & ''Par Exemple : Achat 2014'', ''CHOIX DU MOIS !!! '')
Set trouve1=workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').rows(1).cells.find(bte & ''GNF'' , lookat:= xlwhole)
Set trouve2=workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').rows(1).cells.find( ''Prév'' & bte , lookat:= xlwhole)
Loop
Cl1=split(range(trouve1.address).address, '' $'') (1)
Cl2=split(range(trouve2.address).address, '' $'') (1)
workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').columns(cl1).copy workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').columns (cl2)
end sub
Bonjour les amis ! je viens encore vers vous pour sous soumettre la résolution d'un problème.
J'ai deux classeurs ANN_LEG et TAMP.Xlsx
Dans la feuil1 de ANN_LEG, la première ligne est réservée aux titres de champs. De même que la première ligne de la feuille1 de TAMP.xlsx. Mon travail consiste à copier-coller une colonne donnée de la feuille 1 de TAMP.xlsx dans l'autre feuille du classeur ANN_LEG.xlsx
Voici comment ca doit se passer : à chaque fois, je saisi dans un inputbox un champ de titre (par exemple Achat 2014). L'application doit d'abord chercher si Achat 2014 GNF existe dans TAMP.xlsx et si Prév Achat 2014 existe dans la feuille du classeur ANN_LEG.xlsx et copier coller toute cette colonne dans la feuille du classeur ANN_LEG.xlsx
Après chaque opération, un nouveau, msgbox doit apparaitre et me demander si je désire continuer. Si Oui, apparaitre un inputbox pour y renseigner un titre de champs. Sinon, l'opération est terminée.
Pour le moment, j'essaie une programmation sans msgbox. C'est-à-dire pas de message pour détecter ma volonté de continuer. Après tout, je suis confronté à un problème de boucle folle. Je saisi Achat 2014; Or Achat 2014 GNF et Prév Achat 2014 sont des lignes de champs existant dans les feuilles. Normalement l'opération de copie coller devrait être exécutée mais hélas !! C'est une boucle infinie (l'input apparait après avoir renseigné Achat 2014).
Aidez-moi s'il vous plait. Voire même me permettre d'afficher un nouveau msgbox après l'opération de copie collée pour me demander si je désire continuer ou pas (comme ci-dessus expliquée).
Voici mon code
Sub cop ()
Dim trouve1 as range
Dim trouve2 as range
Do while trouve1 is nothing or trouve2 is nothing
Bte=inputbox("Veuillez renseigner un champs de titre! , '' & chr(10) & ''Par Exemple : Achat 2014'', ''CHOIX DU MOIS !!! '')
Set trouve1=workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').rows(1).cells.find(bte & ''GNF'' , lookat:= xlwhole)
Set trouve2=workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').rows(1).cells.find( ''Prév'' & bte , lookat:= xlwhole)
Loop
Cl1=split(range(trouve1.address).address, '' $'') (1)
Cl2=split(range(trouve2.address).address, '' $'') (1)
workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').columns(cl1).copy workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').columns (cl2)
end sub
A voir également:
- Copier coller une colonne d'une feuille vers une autre
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Comment copier une vidéo youtube - Guide
- Historique copier coller - Guide
- Copier-coller - Accueil - Informatique
4 réponses
Bonjour,
Si la saisie est bte = "Achat 2014" alors bte & "GNF" donne "Achat 2014GNF" et non "Achat 2014 GNF".
Idem pour "''Prév'' & bte qui donne "PrèvAchat 2014" et non "Prèv Achat 2014".
La recherche Find() ne donnera aucune réponse même si la colonne existe.
Ensuite, pas la peine de faire un Do While ... Loop. Il suffit de rappeler la procédure cop.
;0)
Si la saisie est bte = "Achat 2014" alors bte & "GNF" donne "Achat 2014GNF" et non "Achat 2014 GNF".
Idem pour "''Prév'' & bte qui donne "PrèvAchat 2014" et non "Prèv Achat 2014".
La recherche Find() ne donnera aucune réponse même si la colonne existe.
Ensuite, pas la peine de faire un Do While ... Loop. Il suffit de rappeler la procédure cop.
Dim rep As Integer rep = MsgBox("Voulez vous continuer ?", vbYesNo, "Continuer") If rep = vbYes Then cop Else Exit Sub End If
;0)
Bonjour,
En plus de ce que t'indique Polux que je salue, ta syntaxe de "find" est fausse et, de plus, tu peux avoir la valeur de la colonne directement sans passer pat la création d'une cellule, lourde en mémoire ...
un exemple à adapter
nota dans ton code + haut:écrire ""(ouvrer les guillemets) et non 2 apostrophes à la suite
Michel
En plus de ce que t'indique Polux que je salue, ta syntaxe de "find" est fausse et, de plus, tu peux avoir la valeur de la colonne directement sans passer pat la création d'une cellule, lourde en mémoire ...
un exemple à adapter
dim Cl1 as byte, Cl2 as byte
'...code
on error goto= saisie
Cl1=workbook("TAMP.xlsx").worksheets("tampon_Cumul").Rows(1).Find(what:="Achat 2014 GNF"., lookat:=xlWhole).Column
'Cl2=.....m^me punition
On error goto 0
'....code dont proposition de Polux
Exit sub
saisie:
msgbox "saisie incorrecte",vbcritical
End sub
nota dans ton code + haut:écrire ""(ouvrer les guillemets) et non 2 apostrophes à la suite
Michel
Merci pour l'intérêt que tu as accordé a ma préoccupation!
j'aimerais savoir
Si: bte &'' ''& ''GNF" donne Achat 2014 GNF.
Et ''Prév'' &'' ''& bte, ça devrait marcher non?
Merci d'avance pour la réponse!
j'aimerais savoir
Si: bte &'' ''& ''GNF" donne Achat 2014 GNF.
Et ''Prév'' &'' ''& bte, ça devrait marcher non?
Merci d'avance pour la réponse!
Merci les amis.
Après avoir fais bte &'' ''& ''GNF et ''Prév'' &'' ''& bte, j'ai la boucle folle. c'est a dire une boucle infini de inputbox comm s'il y existait une erreur de saisie.
En utilisant la methode de Michel, ca ne marche pas et jai un message d'erreur : erreur definie par l'application ou par l'objet
Voici la synthaxe.
Aidez moi, je suis un apprenant!!
sub....
Dim cl1 as byte
Dim cl2 as byte
cl1=workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').rows(1).cells.find(bte &'' ''& ''GNF , lookat:= xlwhole).columns
cl2=workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').rows(1).cells.find( ''Prév'' &'' ''& bte , lookat:= xlwhole).columns
workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').columns(cl1).copy workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').columns (cl2)
end sub
Après avoir fais bte &'' ''& ''GNF et ''Prév'' &'' ''& bte, j'ai la boucle folle. c'est a dire une boucle infini de inputbox comm s'il y existait une erreur de saisie.
En utilisant la methode de Michel, ca ne marche pas et jai un message d'erreur : erreur definie par l'application ou par l'objet
Voici la synthaxe.
Aidez moi, je suis un apprenant!!
sub....
Dim cl1 as byte
Dim cl2 as byte
cl1=workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').rows(1).cells.find(bte &'' ''& ''GNF , lookat:= xlwhole).columns
cl2=workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').rows(1).cells.find( ''Prév'' &'' ''& bte , lookat:= xlwhole).columns
workbook(''TAMP.xlsx'').worksheets(''tampon_Cumul'').columns(cl1).copy workbook(''ANN_LEG.xlsx'').worksheets(''Cumul'').columns (cl2)
end sub
Merci les amis!
Mon premier programme ci dessus marche, le problème était lié a la base de donnée.
Au fait Dans l'une des feuilles, il y avait Achat 2014 et dans l'autre il y avait Achat 2014.(problème d'espace). le contrôle des syntaxes des mots est rigoureux du fait de xlwhole.
En plus, j'ai écris Prév au lieu de ''Prév'' &'' ''& bte, tout en modifiant les champs de titres de ma base de donnée.
Merci les amis!!!
Mon premier programme ci dessus marche, le problème était lié a la base de donnée.
Au fait Dans l'une des feuilles, il y avait Achat 2014 et dans l'autre il y avait Achat 2014.(problème d'espace). le contrôle des syntaxes des mots est rigoureux du fait de xlwhole.
En plus, j'ai écris Prév au lieu de ''Prév'' &'' ''& bte, tout en modifiant les champs de titres de ma base de donnée.
Merci les amis!!!