Trier et copier des cellules en fonction de ce qui est marqué dans une autre cellule

gan-z

XLDnaute Nouveau
Bonjour,

J'ai un fichier dans lequel j'ai une base de donnée.

Dans certaines de ces colonnes j’ai soit « oui » soit « non »

Ma macro serait de faire un balayage dans la colonne M (par exemple) depuis la cellule M17 jusqu'à M2000.
La macro tombe sur un "oui" en M275 elles recopie les valeur en N275 O275 P275 Q275 R275 S275.

Exemple :

Sur la ligne Ligne 275 j’ai :

Cellule M275 = "oui" à copier dans le fichier gan-z.xls en A1
Cellule N275 = "25" à copier dans le fichier gan-z.xls B1
Cellule O275 = "bleu" à copier dans le fichier gan-z.xls en C1
Cellule Q275 à copier dans le fichier gan-z.xls en D1
Cellule R275 à copier dans le fichier gan-z.xls en E1
Cellule S275 à copier dans le fichier gan-z.xls F1



En espérant être clair dans ma demande.
Merci d’avoir pris le temps de me lire et pour votre éventuelle réponse.
Gan-z
 

Cousinhub

XLDnaute Barbatruc
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Bonsoir,

ce n'est pas la peine d'ouvrir plusieurs fils pour la même question.... (un petit up suffit....)

Comme ton énoncé n'est pas très clair :

N275 O275 P275 Q275 R275 S275.

et ensuite :

Cellule M275 = "oui" à copier dans le fichier gan-z.xls en A1
Cellule N275 = "25" à copier dans le fichier gan-z.xls B1
Cellule O275 = "bleu" à copier dans le fichier gan-z.xls en C1
Cellule Q275 à copier dans le fichier gan-z.xls en D1
Cellule R275 à copier dans le fichier gan-z.xls en E1
Cellule S275 à copier dans le fichier gan-z.xls F1

j'ai considéré que tu voulais les données des colonnes N à S....
Si ce n'est pas le cas, on adaptera....

Avec ce code, il faut que le fichier de destination ("gan-z.xls") soit dans le même répertoire que le fichier que tu traites....
Si ce n'est pas le cas, on adaptera....
Si le fichier de destination n'est pas ouvert, le code l'ouvre automatiquement.....

le code :

Code:
Sub extract()
Dim Aw As Object, Dw As Object
Dim DerCol As Integer
Dim DerLig As Long
Dim X As Byte
Application.ScreenUpdating = False
Set Aw = ThisWorkbook.Sheets("Feuil1")
With Sheets("feuil1")
   DerCol = .[A17].End(xlToRight).Column
   DerLig = .[A65000].End(xlUp).Row
   .Range(.Cells(17, 1), .Cells(DerLig, DerCol)).Name = "base"
End With
On Error Resume Next
X = Len(Workbooks("gan-z.xls").Name)
If X = 0 Then
    ChDir ActiveWorkbook.Path
    Workbooks.Open "gan-z.xls"
End If
Set Dw = Workbooks("gan-z.xls").Sheets("Feuil1")
With Dw
    Aw.Range("N17:S17").Copy .Range("A1")
    .Range("J1").Value = Aw.Range("M17").Value
    .Range("J2").Value = "oui"
    Aw.Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
        "J1:J2"), CopyToRange:=.Range("A1:F1"), Unique:=False
    .Range("J1:J2").Clear
End With
End Sub

Le fichier :
 

Pièces jointes

  • gan-z_v1.zip
    11.4 KB · Affichages: 53

gan-z

XLDnaute Nouveau
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Bonsoir,

Tout d'abord merci d'avoir pris le temps de me répondre,
Je vais analyser le code que tu me proposes, je vais l'adapter à ma sauce je pense que cela devrait aller, je te tiens au courant.

Encore merci,
Bonne soirée à toi,
Gan-z
 

gan-z

XLDnaute Nouveau
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Ok j'ai pu exploiter ton code à ma sauce, j'ai un seul petit souci, je souhaite recuperer aussi les paramètres de la colonne A et B en + des colonnes que l'on recupere avec le code que tu m'as préparé.
J'ai essayé mais ça ne tri pas correctement en fonction du "oui" en colonne "M"

Code :

Sub Extract()
Dim Aw As Object, Dw As Object
Dim DerCol As Integer
Dim DerLig As Long
Dim X As Byte
Application.ScreenUpdating = False
Set Aw = ThisWorkbook.Sheets("Feuil1")
With Sheets("feuil1")
DerCol = .[A1].End(xlToRight).Column
DerLig = .[A65000].End(xlUp).Row
.Range(.Cells(17, 1), .Cells(DerLig, DerCol)).Name = "base"
End With
On Error Resume Next
X = Len(Workbooks("gan-z.xls").Name)
If X = 0 Then
ChDir ActiveWorkbook.Path
Workbooks.Open "gan-z.xls"
End If
Set Dw = Workbooks("gan-z.xls").Sheets("Feuil1")
With Dw
Aw.Range("A17:b17").Copy .Range("A1")
Aw.Range("N17:S17").Copy .Range("c1")
Range("J1").Value = Aw.Range("A17").Value
.Range("J2").Value = "oui"
Aw.Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
"J1:J2"), CopyToRange:=.Range("A1:H1"), Unique:=False
.Range("J1:J2").Clear
End With

End Sub

Merci de ton aide.
Gan-z
 

Cousinhub

XLDnaute Barbatruc
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Re-,

regarde dans ton code, il manque un point ( . )....


Code:
...
Aw.Range("N17:S17").Copy .Range("c1")
[COLOR="Red"][SIZE="7"].[/SIZE][/COLOR]Range("J1").Value = Aw.Range("[COLOR="Red"][SIZE="7"]M[/SIZE][/COLOR]17").Value
.Range("J2").Value = "oui"
....

Edit, et de plus, c'est dans la colonne M, qu'on teste le "oui"
Modif en Rouge
 
Dernière édition:

gan-z

XLDnaute Nouveau
Re: Trier et copier des cellules en fonction de ce qui est marqué dans une autre cell

Je reviens vers toi pour te remercier je n'ai pas essayé encore, je pense cela doit fonctionner.
Merci donc pour ton aide.
Gan-z
 

gan-z

XLDnaute Nouveau
Re: Trier et copier des cellules en fonction de ce qui est marqué dans une autre cell

Salut,

Avec excel 2007 la macro ne marche plus, j'ai essayé avec le fichier que tu m'as transmis mais ça ne fonctionne pas.
Y' a t il une différence de code entre 2007 et 2000 au niveau des versions ?

Merci
Gan-z
 

Cousinhub

XLDnaute Barbatruc
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Bonjour,

la seule différence, du moins concernant ce code, est l'activation ou non des macros....

Sous 2007, tu cliques sur le bouton office, en haut à gauche

Puis sur "Options Excel"

Dans le module "Standard", tu valides "Afficher l'onglet Développeur dans le Ruban"

OK

Tu as un nouveau ruban appelé "'Développeur", au bout à droite...

Clique dessus, puis sur "Sécurité des Macros", à gauche

Sélectionne "Désactiver toutes les macros avec notification" (niveau conseillé)

Quitte Excel, et redémarre...

Au dessus de la barre des formules, tu as un avertissement de Sécurité, avec un bouton "Options"

Clique dessus, et sélectionne : "Activer ce contenu"..

Et voili...

Bonne journée
 

gan-z

XLDnaute Nouveau
Re: Trier et copier des cellules en fonction de ce qui est marqué dans une autre cell

Bonjour,

J'ai fait la manip mais dans mon fichier de destination il n' y a rien du tout.
Pourtant c'est bien le fichier que tu m'as envoyé.

Gan-z
 

gan-z

XLDnaute Nouveau
Re: Trier et copier des cellules en fonction de ce qui est marqué dans une autre cell

En fait ça fait le fichier de destination ne s'ouvre pas apparement il ne le reconnait pas.

Je souhaite uniquement recopier les valeur ala place de copier "tout" au niveau des cellules.

Gan-z
 

Cousinhub

XLDnaute Barbatruc
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Re,

j'ai essayé le fichier joint avec 2007, pas de souci....

qu'entends-tu par :

Je souhaite uniquement recopier les valeur ala place de copier "tout" au niveau des cellules.

Et attention, il faut que le deuxième fichier soit dans le même répertoire que le fichier contenant la macro...
 

gan-z

XLDnaute Nouveau
Re: Trier et copier des cellules en fonction de ce qui est marqué dans une autre cell

Re --

J'ai trouvé pourquoi ç ane marche pas parce qie mon fichier "Gan-z.xls" doit avoir l'extension "Microsoft Excel 97- 2003" au moment d'enregistrer après la création de celui-ci.

En fait je ne veux que recopier les valeurs des cellules.

Gan-z
 

Cousinhub

XLDnaute Barbatruc
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Re-,

euh...

mon fichier "Gan-z.xls" doit avoir l'extension "Microsoft Excel 97- 2003"

Cela n'a rien à voir....

J'ai fait l'essai, le Gan-z.xls était en97-2003, et j'ai extrait à partir de 2007...

:confused::confused::confused:

En fait je ne veux que recopier les valeurs des cellules.

C'est ce que le programme fait, il me semble....
sinon, tu fais un Cells.ClearFormats en fin de code....

Code:
With Dw
    ....
    ....
    .Range("J1:J2").Clear
    .Cells.ClearFormats
End With
 

gan-z

XLDnaute Nouveau
Re: Trier et copier des cellules en fonction de ce qui est marqué dans une autre cell

En fait quannd tu crées le fichier Gan-z.xls il y a un menu deroulant je selectionne version 97 - 2003 d'excel, l'icône n'est pas la même dans le repertoire. c'est ce qui m'a mis la puce à l'oreille.

Ok pour le ".Cells.ClearFormats"

Une derniere petite chose, je souhaite en + de selectionner les colonnes N à S je souhaite prendre les colonnes A et B. Comment je dois faire ?

Merci
Gan-z
 

Cousinhub

XLDnaute Barbatruc
Re : Trier et copier des cellules en fonction de ce qui est marqué dans une autre cel

Re-,

normalement, ça le fait.....:confused:

Code:
With Dw
    Aw.Range("A17:b17").Copy .Range("A1")
    Aw.Range("N17:S17").Copy .Range("c1")

on recopie les en-têtes A et B et de N à S

pour peu que les en-têtes soient en ligne 17....
 

Discussions similaires

Statistiques des forums

Discussions
312 249
Messages
2 086 598
Membres
103 253
dernier inscrit
alscanv974