[vba/excel] rechercher et transferer données

Fermé
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 - 26 févr. 2008 à 15:40
 Utilisateur anonyme - 27 févr. 2008 à 18:24
Bonjour,

j'ai un tableau avec plusieurs lignes

dans la 1ere colonne se trouve des valeurs du style janvier 1999, janvier 2000, fevrier 1999 etc

je voudrais faire une macro qui me permet de récupérer les lignes contenat les valeurs janvier 1999, fevrier 1999 jusqu'a décembre 1999 et les transferer vers une autre feuille
A voir également:

19 réponses

i = 1 'si la première valeurr est sur la ligne 1
while range("A"+cstr(i))<>" ' si A est la collone des données
worksheets("feuilCible").range("celleulecible").value = range("A"+cstr(i)).value
i = i+1
wend
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
26 févr. 2008 à 16:05
merci

mais je ne vois a quel moment ce code s'occupe de prendre les valeurs janvier 1999, février 1999 etcc.....

a quoi sert CStr ??
0
Utilisateur anonyme
26 févr. 2008 à 17:12
alors je traduis

i = 1 'si la première valeurr est sur la ligne 1
while range("A"+cstr(i))<>" ' si A est la collone des données
worksheets("feuilCible").range("celleulecible").value = range("A"+cstr(i)).value
i = i+1
wend
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159 > Utilisateur anonyme
26 févr. 2008 à 19:15
ok d'accord mais ca ne répond pas a mon probleme
0
Utilisateur anonyme
27 févr. 2008 à 08:47
Désolé mais cela correspond "en tous points" à la description du premier message. Il vous faut adapter les coordonnes des données d'origine et de destination.
rappel prendre les données de la première colonne et les transfeérer dans une autre feuille !

Puisque vous êtes comme St Thomas, cliquez sur l'ural suivante et vérifiez !
C'est un fichier excel qui fait ce que vous demandez.

https://www.cjoint.com/?cBi54hj6Ow
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 09:43
oui d'accord dans ce cas la ca marche mais dans ma colonne A de la première feuille j'ai des données de ce type

Janvier 1999
Janvier 2000
Février 1999
Mars 1999
Mars 2000
Mars 2001
Avril 1999

etc...

je ne veux transferer que les données correspondant a l'année 1999 pas les autres

de plus je dois envoyer aussi le contenu des cellules qui se trouvent sur la droite de chaque ligne

par exemple pour janvier 1999 je dois aussi transferer ce qui se trouve dans les cellules se situant sur la meme ligne
0
Utilisateur anonyme
27 févr. 2008 à 09:50
Bonjour
alors il faut faire une sélection avec un if

exemeple
annee= right(range("A"+cstr(i)).value,4)
if annee = 1999 alors on copie sinon rien on passe au suivant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 09:52
ok je vais essayer
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 10:10
comment préciser que je veux aussi copier les cellules qui se trouvent a coté
0
Utilisateur anonyme
27 févr. 2008 à 10:12
bonjour, (re)

la sélection porte alors sur un groupe de cellule exemple A2:H2 cellules A2 à H2
ou encore

A2: G4 cellules A2 à G4 (plusieur lignes plusieurs colonnes)




une combine :

faire outils macro nouvelle macro

tout ce qui est alors fait dans le tableur est enregistré
quand on a fini, on fait
outils macro arrêter l'enregistrement

puis outils macro macro on sélectionne la macro, on clique sur modifier et là on voit le code qu'il faut pour faire ce qu'on a fait !
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 10:15
je suis pas très doué tu peux me l'incorporer au code précédent?
0
Utilisateur anonyme
27 févr. 2008 à 10:22
if annee = 1999 then
'sélection des cellules A à K de la ligne i
Range("A"+cstr(i) + ":K"+cstr(i).Select
Selection.Copy
'copie sur la feuil2 à partir de la cellule A3
Sheets("Feuil2").Select
Range("A3").Select
ActiveSheet.Paste

end if
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 10:28
en regardant tout ca je me demande si pour la suite je ne vais pas avoir de soucis

mon tableau et comme suit

Janvier 1999 127510 5 0 5 4 0 0 0 0 0 0 0 3
Mars 1999 127510 0 0 0 0 0 0 0 0 0 0 0 0
Mars 2000 127510 0 0 0 0 0 0 0 0 0 0 0 0
Mars 1999 127510 0 0 0 0 0 0 0 0 0 0 0 0
Janvier 2000 127530 2 4 3 2 1 6 7 8 9 10 11 12
Janvier 2001 127540 1 2 3 4 5 6 7 8 9 10 11 12
Mai 1999 127530 5 4 3 2 1 2 3 4 5 6 7 8
Janvier 1999 127510 0 0 0 0 0 0 0 0 0 0 0 0


127510 est un numéro de secteur

plusieurs secteur appartiennent a un groupe

je dois en fait faire des comparaisons entre chaque groupe

par exemple connaitre l'evolution du groupe 1 entre 1999 et 2000 et ceux pour chaque mois

je ne sais pas si je part sur de bonnes bases
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 10:47
sinon j'ai mis ca dans ma feuille

Sheets("Données").Select






i = 1 'si la première valeurr est sur la ligne 1
While Range("A" + CStr(i)) <> " ' si A est la collone des données "
annee = Right(Range("A" + CStr(i)).Value, 4)
If annee = 1999 Then

Range("A" + CStr(i) & ":K" + CStr(i)).Select



Selection.Copy

Sheets("par secteur").Select
Range("A3").Select
ActiveSheet.Paste
End If

i = i + 1
Wend

j'obtient comme erreur la méthode 'range' de l'objet '_global' a echoué
0
Utilisateur anonyme
27 févr. 2008 à 11:16
Range("A" + CStr(i) & ":K" + CStr(i)).Select

mettre un + à la place du &

0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 11:22
j'ai essayer mais ca ne marche pas

sinon tu penses que mes bases par rapport a mon probleme sont bonnes ?
0
Utilisateur anonyme
27 févr. 2008 à 11:31
Bonjour,


Le principe que je te donne est correct il faut ensuite l'adapter à ton dossier, pas obligatoirement recopier textuellement les exemples.
En effet le nom des feuilles, les références des lignes et colonnes doivent être modifiés en conséquence.

D'autre part tu es le seul à savoir ce que ton application doit faire, à toi donc de la programmer en fonction des spécifications que tu auras définies.


0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 11:37
le probleme est la je vois ce que je veux a peu près mais n'arrive pas a le mettre en forme
0
Utilisateur anonyme
27 févr. 2008 à 11:55
Voilà un code qui fonctionne, mais attention je ne suis pas là pour faire ton travail


https://www.cjoint.com/?cBl3jm1gKq
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 12:01
ca m'a l'air pas mal je vais essayer d'adapter ca

je te tiens au courant
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
27 févr. 2008 à 14:53
bon je reviens a la charge

en complétant le code j'arrive a transferer mes données pour 2 années par exemple 1999 et 2000

j'obtient une feuille de ce style

http://www.cijoint.fr/cjlink.php?file=cj200802/cij61222535723.xls.

le but maintenant est de comparer l'évolution de chaque groupe (1 et 2) entre 1999 et 2000 pour chaque mois

vers quoi je dois orienter mon travail
0
Utilisateur anonyme
27 févr. 2008 à 18:24
Bonsoir,
le fichier n'est pas accessible.
pour la comparaison il suffit de comparer les cellules
les cellules sont référencées par leur adresse ligne colonne. c'est maintenant de l'algorithmie toute simple.

0