[vba/excel] rechercher et transferer données

antic80 Messages postés 4877 Statut Contributeur -  
 giheller -
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
Configuration: Windows XP
Opera 9.25

19 réponses

  1. voila
     
    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
  2. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    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
    1. giheller
       
      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
      1. antic80 Messages postés 4877 Statut Contributeur 1 178 > giheller
         
        ok d'accord mais ca ne répond pas a mon probleme
        0
  3. giheller
     
    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
    1. antic80 Messages postés 4877 Statut Contributeur 1 178
       
      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
  4. giheller
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    ok je vais essayer
    0
  7. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    comment préciser que je veux aussi copier les cellules qui se trouvent a coté
    0
  8. giheller
     
    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
  9. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    je suis pas très doué tu peux me l'incorporer au code précédent?
    0
  10. giheller
     
    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
  11. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    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
  12. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    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
  13. giheller
     
    Range("A" + CStr(i) & ":K" + CStr(i)).Select

    mettre un + à la place du &

    0
  14. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    j'ai essayer mais ca ne marche pas

    sinon tu penses que mes bases par rapport a mon probleme sont bonnes ?
    0
  15. giheller
     
    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
  16. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    le probleme est la je vois ce que je veux a peu près mais n'arrive pas a le mettre en forme
    0
  17. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    ca m'a l'air pas mal je vais essayer d'adapter ca

    je te tiens au courant
    0
  18. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    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
  19. giheller
     
    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