Macro excel, copie sous condition
Résolu
cid2mizar
Messages postés
19
Statut
Membre
-
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un petit probleme sous excel. J'ai a ma disposition un fichier dont les colonnes sont les suivantes :
- nom de deck
- nom de team
- nom de vendeur
- categorie de produit
- nom du produit
- nom du client
Chaque vendeur apparait plusieurs fois. Je souhaite creer un fichier excel dont la premiere partie serait fixe, constituee de toutes les colonnes ci dessus (sans la colonne client) mais avec l'ensemble des produits pour tous les vendeurs.
Ca ne doit pas sembler tres clair dit comme ca donc voici la macroque je souhaiterais realiser (je ne connais rien en VBA et en macro, je vous la met en melange algo/C, mes souvenirs de programation datent...)
j:=2
for i = 2 to 4586 do
if (cellule Ci <> cellule Ci-1) then
sheet2_celluleAj=Sheet1_celluleAi
sheet2_celluleBj=Sheet1_celluleBi
sheet2_celluleCj=Sheet1_celluleCi
j=j+23 (il y a 23 produits)
end
end
voila j'ai pas la moindre idee de comment ca marche en macro excel, si vous avez des idees sur comment faire ca.
J'ai lance un enregistrement de macro et j'ai obtenu ca
Sheets("Sheet1").Select
Range("A96:C96").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A25").Select
ActiveSheet.Paste
Range("B33").Select
ca me donne comment fairel a copie mais je ne sais pas comment passer une cellule avec des adresses variables (ici i et j )
Merci d'avance
j'ai un petit probleme sous excel. J'ai a ma disposition un fichier dont les colonnes sont les suivantes :
- nom de deck
- nom de team
- nom de vendeur
- categorie de produit
- nom du produit
- nom du client
Chaque vendeur apparait plusieurs fois. Je souhaite creer un fichier excel dont la premiere partie serait fixe, constituee de toutes les colonnes ci dessus (sans la colonne client) mais avec l'ensemble des produits pour tous les vendeurs.
Ca ne doit pas sembler tres clair dit comme ca donc voici la macroque je souhaiterais realiser (je ne connais rien en VBA et en macro, je vous la met en melange algo/C, mes souvenirs de programation datent...)
j:=2
for i = 2 to 4586 do
if (cellule Ci <> cellule Ci-1) then
sheet2_celluleAj=Sheet1_celluleAi
sheet2_celluleBj=Sheet1_celluleBi
sheet2_celluleCj=Sheet1_celluleCi
j=j+23 (il y a 23 produits)
end
end
voila j'ai pas la moindre idee de comment ca marche en macro excel, si vous avez des idees sur comment faire ca.
J'ai lance un enregistrement de macro et j'ai obtenu ca
Sheets("Sheet1").Select
Range("A96:C96").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A25").Select
ActiveSheet.Paste
Range("B33").Select
ca me donne comment fairel a copie mais je ne sais pas comment passer une cellule avec des adresses variables (ici i et j )
Merci d'avance
A voir également:
- Macro excel, copie sous condition
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Copie cachée - Guide
- Word et excel gratuit - Guide
3 réponses
bonjour
C'est bien d'avoir des souvenirs d'un autre langage alors je te transpose ton code :
C'est bien d'avoir des souvenirs d'un autre langage alors je te transpose ton code :
Public Sub copie()
Dim i As Long
Dim j As Long
Dim W1 As Worksheet
Dim W2 As Worksheet
Set W1 = Worksheets("Sheet1")
Set W2 = Worksheets("Sheet2")
j = 2
For i = 2 To 4586
If W1.Cells(i, 3) <> W1.Cells(i - 1, 3) Then
W2.Cells(j, 1) = W1.Cells(i, 1)
W2.Cells(j, 2) = W1.Cells(i, 2)
W2.Cells(j, 3) = W1.Cells(i, 3)
j = j + 23 ' (il y a 23 produits)
End If
Next i
End Sub
ca fait deux ans que j'ai pas mes le nez dans du code et pas moyen de trouver le moindre cours simple.