VBA_Collage spécial d'une colonne "sous condition" sur une autre feuille excel
mouncefdi
Messages postés1Date d'inscriptionvendredi 6 mars 2009StatutMembreDernière intervention10 mars 2009
-
10 mars 2009 à 17:32
cs_PHILOCHARD
Messages postés6Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention12 septembre 2009
-
18 mai 2009 à 21:23
salut le forum,
Je suis un débutant en VBA, mais connaissances sont très limitées, ci-dessous je vous explique ce que je souhaite faire en espérant que quelqu'un pourra m'éclairer.
Je souhaite faire un copier/coller spécial (copier la colonne Z d'une feuille 1 et la coller sur la ligne 1 à partir de la colonne D sur une feuille 2).
Sur la feuille 1 de mon excel :
Dans un premier temps je dois automatiser la création de cette colonne Z qui correspond à la concaténation des colonnes G jusqu'à Q si la condition suivante est respectée : les cellules de la colonne X = Main.
Dans un second temps je veux classer cette colonne afin d'éliminer les doublons un à un (car dans mon cas les concaténations peuvent avoir le même nom).
Sur la feuille 2 de mon excel :
Finalement je souhaite faire un collage spécial de la colonne Z sur la ligne 1 à partir de la colonne D d'une autre feuille (feuille 2).
Comment je pourrais faire pour coder cela ?
<!-- / message -->
A voir également:
VBA_Collage spécial d'une colonne "sous condition" sur une autre feuille excel
cs_PHILOCHARD
Messages postés6Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention12 septembre 20091 15 mai 2009 à 20:32
bonjour,je me permet de venir poser une petite question a cnt jc qui m'a l'air tres competant en vba,
moi j'ai un meme genre de probleme sauf que la colonne de la feuil 2 (ou je dois coller )n'est pas connu a l'avance,je m'explique :
dans mons userform j'ai 14 checbox qui represente les 14 colonnes de ma feuil1 donc je peux decider quelle colonne que je copie mais il me faudrai et c'est la que je coince que les colonnes se copie les une apres les autres sans colonne vide entre les deux
exemple si je selectionne la colonne 1,la colonne 5 et la colonne 8
il doit me copier dans la feuil2 la colonne1 dans la colonne1 ,la colonne 5 dans la colonne2 et la colonne 8 dans la colonne 3
je crois que mes explication sont suffisement clair et j'espere qu'une personne pourras m'aider
cnt
Messages postés219Date d'inscriptionlundi 21 novembre 2005StatutMembreDernière intervention20 décembre 20101 16 mai 2009 à 01:22
salut PHILOCHARD
je te propose cette solution, à toi de voir si ça te convient
Private Sub CommandButton1_Click()
Dim obj As Control, i As Byte, j As Byte
i = 0
j = 0
For Each obj In Me.Controls
If TypeName(obj) = "CheckBox" Then
i = i + 1
If obj.Value = True Then
j = j + 1
Sheets("Feuil1").Range("a:a").Offset(0, i - 1).Copy Sheets("Feuil2").Range("a:a").Offset(0, j - 1)
End If
End If
Next
End Sub
cs_PHILOCHARD
Messages postés6Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention12 septembre 20091 17 mai 2009 à 13:24
désolé cnt jc soit je n'ai pas tout compris ou alors il doit y avoir un probleme dans le code je t'explique
j'ai copier le code que tu m'a donné ci dessus dans le bouton pour lancé l'impression mais le probleme c'est qu'il ne copie pas les colonnes dans la feuil 2
Private Sub impression_Click()
Dim obj As Control, i As Byte, j As Byte
i = 0
j = 0
For Each obj In Me.Controls
If TypeName(obj) = "CheckBox" Then
i = i + 1
If obj.Value = True Then
j = j + 1
Sheets("Feuil1").Range("a:a").Offset(0, i - 1).Copy Sheets("Feuil2").Range("a:a").Offset(0, j - 1)
End If
End If
Next
sheets("feuil2").printout
End Sub
voici comment je l'ai encodé donc si tu peux voir pourquoi cela m'aiderai beaucoup merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cnt
Messages postés219Date d'inscriptionlundi 21 novembre 2005StatutMembreDernière intervention20 décembre 20101 18 mai 2009 à 10:46
Bonjour
Je confirme que ça fonctionne chez moi avec l'impresssion de la feuille copiée.
Est-ce que les CheckBox correspondent bien par leurs index à chaque colonne par leur numéro?
J'apporte une modification dans l'instruction de copie des données plus simple.
Dim obj As Control, i As Byte, j As Byte
i = 0
j = 0
For Each obj In Me.Controls
If TypeName(obj) = "CheckBox" Then
i = i + 1
If obj.Value = True Then
j = j + 1
Sheets("Feuil1").Columns(i).Copy Sheets("Feuil2").Columns(j)
End If
End If
Next
Sheets("feuil2").PrintOut
CNTJC
cs_PHILOCHARD
Messages postés6Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention12 septembre 20091 18 mai 2009 à 14:44
excuse moi CNT je suis lourd dingue mais tout ce code je dois donc le copier autant de fois que j'ai de checkbox et renommé
If TypeName(obj) = "CheckBox" Then
par
If TypeName(obj) = CheckBox1 Then
et ainsi de suite jusque checkbox14
le tout dans mon bouton
c'est bien ça?
encore désolé pour l'idiotie qui a une part importante chez moi
mais je me suis lancé dans un projet et je m'apercois que j'ai encore beaucoup de chose a apprendre en vba
cnt
Messages postés219Date d'inscriptionlundi 21 novembre 2005StatutMembreDernière intervention20 décembre 20101 18 mai 2009 à 18:40
Re
Ce code est valable pour toutes les "cases à cocher", grâce à la boucle "For ... Next"
Ma question portée sur la correspondance entre les numéros d'ordre de ces cases et les colonnes de la feuille2 ==> CheckBox1 >> Colonne(1), CheckBox2 >> Colonne(2), etc...
Voici le code revu et corrigé pour le bouton "impression"
Private Sub impression_Click()
Dim obj As Control, i As Byte, j As Byte, m As Byte
i = 0
j = 0
For Each obj In Me.Controls
If TypeOf obj Is MSForms.CheckBox Then
i = i + 1
If obj.Value = True Then
j = j + 1
Sheets("Feuil1").Columns(i).Copy Sheets("Feuil2").Columns(j)
End If
End If
Next
Sheets("Feuil2").PrintOut
End Sub
cs_PHILOCHARD
Messages postés6Date d'inscriptionjeudi 25 mars 2004StatutMembreDernière intervention12 septembre 20091 18 mai 2009 à 20:12
CNT je voulais te dire un tres tres grand MERCI ,le code et les explications que tu m'a fourni fonctionnent bien et maintenant je vais pouvoir terminer mon programme
il s'agit en fait d'un programme pour classé une multitude de collection parametrable a souhait
je voudrai te demander une derniere faveur
je te donne mon e-mail poiur que tu m'envoi le tien comme ca je t'enverai un lien pour le telecharger via mégaupload ainsi tu pourras me dire ce que tu pense de mon prog