Copier / coller avec condition

Résolu/Fermé
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011 - 21 mars 2011 à 09:57
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011 - 21 mars 2011 à 11:54
Bonjour tout le monde ;
je suis debutant en Vba et j 'ai besoin de faire une macro qui permet de faire copier coller avec condition :

En fait j'ai ma col A de la Feuil1 qui contient les articles :
exemple :
colA
Article1
Article1
Article1
Article2
Article2
Article3
Article4
Article4
.
.
je veux faire une macro qui permet de copier "Article1" dans la cellule (1:1) de la Feuil2cdu classeur , et puis elle compare la cellule (1:1) de Feuil1 (celle qu'on déjà copier dans A(1:1) de la Feuil2 ) avec les autres cellules de la meme colonne (col des artcles) une fois un autre article rencontré ,elle le copier pour le coller dans la cellule (5:1) de la feuil2 .........

exemple de resultat voulue :
Feuil2 ;
Cellule (1:1) -----> Article1
cellule(5:1) ------> Article2
cellule(10:1) -----> Article3
cellule (15:1) ----> Article4
Cellule (20:1) ---> Article4
.
.
.
.
.
Merci bcp de votre aide
A voir également:

4 réponses

ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
21 mars 2011 à 10:24
bonjour

quelque chose comme ça devrait aller

Option Explicit

Private Sub CommandButton1_Click()
Const limin1 = 1
Const co1 = 1
Const li2 = 1
Const comin2 = 1
Dim limax1 As Long, li1 As Long, nbart1 As Long
Dim art1
Dim co2 As Long
limax1 = Sheets(1).Range("A1").End(xlDown).Row
art1 = Sheets(1).Cells(1, 1).Value
nbart1 = 1
Sheets(2).Cells(li2, comin2).Value = art1
For li1 = limin1 + 1 To limax1
  If Sheets(1).Cells(li1, co1).Value <> art1 Then
    art1 = Sheets(1).Cells(li1, co1).Value
    nbart1 = nbart1 + 1
    Sheets(2).Cells(li2, 5 * (nbart1 - 1)).Value = art1
  End If
Next li1
End Sub

RQ. modifier les constantes selon les besoins

bonne suite
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
21 mars 2011 à 11:22
desolé, j'ai mal lu et confondu les lignes et les colonnes

Option Explicit

Private Sub CommandButton1_Click()
Const limin1 = 1
Const co1 = 1
Const limin2 = 1
Const co2 = 1
Dim limax1 As Long, li1 As Long, nbart1 As Long
Dim art1
limax1 = Sheets(1).Range("A1").End(xlDown).Row
art1 = Sheets(1).Cells(1, 1).Value
nbart1 = 1
Sheets(2).Cells(limin2, co2).Value = art1
For li1 = limin1 + 1 To limax1
  If Sheets(1).Cells(li1, co1).Value <> art1 Then
    art1 = Sheets(1).Cells(li1, co1).Value
    nbart1 = nbart1 + 1
    Sheets(2).Cells(5 * (nbart1 - 1), co2).Value = art1
  End If
Next li1
End Sub
0
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
21 mars 2011 à 11:49
Merci
ccm81 pour ta réponse , maleureusement ça ne marche pas en fait elle copie just la première cellule de la feuil1 (A1) et elle la colle dans la cellule A1 de la feuil2 c'est tt .

rq : il n 'est aucune erreur

je ne comprent pas pourquoi ça ne marche pas

Merci
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
21 mars 2011 à 11:53
re

es tu sur d'avoir transposé correctement le code
un lien vers un exemple qui fonctionne

http://www.cijoint.fr/cjlink.php?file=cj201103/cijoIoOgSW.xls

bonne suite
0
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
21 mars 2011 à 11:54
non non excuse moi , j été con hh . ça marche impec

merci bcp
0