OVH Cloud OVH Cloud

Macro selection/recopie valeur

4 réponses
Avatar
MiMate
Bonjour,

J'ai un feuille excel qui recupère les valeurs d'une base de données Access.
Voici comment elle se présente :
( A) ( B) ( C ) ( D)
(1) 1 500 X 34
(2) 2 20 R 30
(3) 1 300 T 48
(4) 3 340 D 07
(5) 1 200 R 12
(6) 2 499 Z 11

Je souhaiterai faire une macro qui recupère dans ma feuille 2 les colonnes
A, B, et D de ma feuille 1 lorsque que la colonne A (de la feuille 1) est
égal à 1. Pour compliquer le tout je souhaite que la ligne soit pas
seulement copier mais insérer par exemple à partir de la ligne 3 de ma
feuille 2.
Ce qui donnerai le résultat suivant sur ma feuille 2:

(A) ( B) ( C)
(1)
(2)
(3) 1 500 34
(4) 1 300 48
(5) 1 200 12


je pense que cela doit être possible, mais ça depasse mes compétences. Si
quelqu'un à une solution ...

MERCI.

4 réponses

Avatar
Pierre CFI [mvp]
bonjour
avec créer une requete (menu données) tu utilises msquery, mets les champs voulus avec comme critére dans le premier champ
puis insérer les données en A3

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"MiMate" a écrit dans le message de news:
Bonjour,

J'ai un feuille excel qui recupère les valeurs d'une base de données Access.
Voici comment elle se présente :
( A) ( B) ( C ) ( D)
(1) 1 500 X 34
(2) 2 20 R 30
(3) 1 300 T 48
(4) 3 340 D 07
(5) 1 200 R 12
(6) 2 499 Z 11

Je souhaiterai faire une macro qui recupère dans ma feuille 2 les colonnes
A, B, et D de ma feuille 1 lorsque que la colonne A (de la feuille 1) est
égal à 1. Pour compliquer le tout je souhaite que la ligne soit pas
seulement copier mais insérer par exemple à partir de la ligne 3 de ma
feuille 2.
Ce qui donnerai le résultat suivant sur ma feuille 2:

(A) ( B) ( C)
(1)
(2)
(3) 1 500 34
(4) 1 300 48
(5) 1 200 12


je pense que cela doit être possible, mais ça depasse mes compétences. Si
quelqu'un à une solution ...

MERCI.







Avatar
ChrisV
Bonjour MiMate,

Selon les données de ton exemple, mais avec une ligne d'en-tête (intitulé1;
intitulé2, 3 et 4) pour les colonnes du tableau de données nommée ici Zn...
Avec en Feuil2, en A1: intitulé1, en A2: 1

Sub zaza()
Sheets("Feuil1").[Zn].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Feuil2").[A1:A2], _
CopyToRange:=Sheets("Feuil2").[A3]
Columns("C:C").Delete
End Sub


ChrisV


"MiMate" a écrit dans le message de news:

Bonjour,

J'ai un feuille excel qui recupère les valeurs d'une base de données
Access.
Voici comment elle se présente :
( A) ( B) ( C ) ( D)
(1) 1 500 X 34
(2) 2 20 R 30
(3) 1 300 T 48
(4) 3 340 D 07
(5) 1 200 R 12
(6) 2 499 Z 11

Je souhaiterai faire une macro qui recupère dans ma feuille 2 les colonnes
A, B, et D de ma feuille 1 lorsque que la colonne A (de la feuille 1) est
égal à 1. Pour compliquer le tout je souhaite que la ligne soit pas
seulement copier mais insérer par exemple à partir de la ligne 3 de ma
feuille 2.
Ce qui donnerai le résultat suivant sur ma feuille 2:

(A) ( B) ( C)
(1)
(2)
(3) 1 500 34
(4) 1 300 48
(5) 1 200 12


je pense que cela doit être possible, mais ça depasse mes compétences. Si
quelqu'un à une solution ...

MERCI.







Avatar
MiMate
Merci pour votre réponse,

Cela fonctionne bien, mais j'ai toujours un problème car aprés avoir fait la
selection des ligne lorsque que mon critère = 1 et les avoir copier dans ma
feuille 2, j'ai besoin de refaire la meme opération avec un critère de
selection = à 2, et de copier ce résultat à la suite.
La longueur de ma selection etant variable j'aimerai pouvoir insérer ma
premiere selection, puis à la suite ma selection2

Est ce possible ?

Mille fois merci



"ChrisV" a écrit dans le message de
news:
Bonjour MiMate,

Selon les données de ton exemple, mais avec une ligne d'en-tête
(intitulé1;

intitulé2, 3 et 4) pour les colonnes du tableau de données nommée ici
Zn...

Avec en Feuil2, en A1: intitulé1, en A2: 1

Sub zaza()
Sheets("Feuil1").[Zn].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Feuil2").[A1:A2], _
CopyToRange:=Sheets("Feuil2").[A3]
Columns("C:C").Delete
End Sub


ChrisV


"MiMate" a écrit dans le message de news:

Bonjour,

J'ai un feuille excel qui recupère les valeurs d'une base de données
Access.
Voici comment elle se présente :
( A) ( B) ( C ) ( D)
(1) 1 500 X 34
(2) 2 20 R 30
(3) 1 300 T 48
(4) 3 340 D 07
(5) 1 200 R 12
(6) 2 499 Z 11

Je souhaiterai faire une macro qui recupère dans ma feuille 2 les
colonnes


A, B, et D de ma feuille 1 lorsque que la colonne A (de la feuille 1)
est


égal à 1. Pour compliquer le tout je souhaite que la ligne soit pas
seulement copier mais insérer par exemple à partir de la ligne 3 de ma
feuille 2.
Ce qui donnerai le résultat suivant sur ma feuille 2:

(A) ( B) ( C)
(1)
(2)
(3) 1 500 34
(4) 1 300 48
(5) 1 200 12


je pense que cela doit être possible, mais ça depasse mes compétences.
Si


quelqu'un à une solution ...

MERCI.











Avatar
ChrisV
Re,

Sub zaza()
Dim i As Integer
[Feuil2!A1] = "int1"
For i = 1 To 2
[Feuil2!A2] = i
[Feuil1!Zn].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[Feuil2!A1:A2], _
CopyToRange:=[Feuil2!A65536].End(xlUp)(2)
Next i
[Feuil2!C:C].Delete
[Feuil2!A1:A2].Clear
End Sub


ChrisV


"MiMate" a écrit dans le message de news:

Merci pour votre réponse,

Cela fonctionne bien, mais j'ai toujours un problème car aprés avoir fait
la
selection des ligne lorsque que mon critère = 1 et les avoir copier dans
ma
feuille 2, j'ai besoin de refaire la meme opération avec un critère de
selection = à 2, et de copier ce résultat à la suite.
La longueur de ma selection etant variable j'aimerai pouvoir insérer ma
premiere selection, puis à la suite ma selection2

Est ce possible ?

Mille fois merci



"ChrisV" a écrit dans le message de
news:
Bonjour MiMate,

Selon les données de ton exemple, mais avec une ligne d'en-tête
(intitulé1;

intitulé2, 3 et 4) pour les colonnes du tableau de données nommée ici
Zn...

Avec en Feuil2, en A1: intitulé1, en A2: 1

Sub zaza()
Sheets("Feuil1").[Zn].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Feuil2").[A1:A2], _
CopyToRange:=Sheets("Feuil2").[A3]
Columns("C:C").Delete
End Sub


ChrisV


"MiMate" a écrit dans le message de news:

Bonjour,

J'ai un feuille excel qui recupère les valeurs d'une base de données
Access.
Voici comment elle se présente :
( A) ( B) ( C ) ( D)
(1) 1 500 X 34
(2) 2 20 R 30
(3) 1 300 T 48
(4) 3 340 D 07
(5) 1 200 R 12
(6) 2 499 Z 11

Je souhaiterai faire une macro qui recupère dans ma feuille 2 les
colonnes


A, B, et D de ma feuille 1 lorsque que la colonne A (de la feuille 1)
est


égal à 1. Pour compliquer le tout je souhaite que la ligne soit pas
seulement copier mais insérer par exemple à partir de la ligne 3 de ma
feuille 2.
Ce qui donnerai le résultat suivant sur ma feuille 2:

(A) ( B) ( C)
(1)
(2)
(3) 1 500 34
(4) 1 300 48
(5) 1 200 12


je pense que cela doit être possible, mais ça depasse mes compétences.
Si


quelqu'un à une solution ...

MERCI.