[vba/excel] rechercher et transferer données

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. 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. Contributeur
      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. 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
      2. Contributeur
        @gihellerok d'accord mais ca ne répond pas a mon probleme
        0
    2. 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. Contributeur
        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
    3. 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
      1. Contributeur
        ok je vais essayer
        0
        1. Contributeur
          comment préciser que je veux aussi copier les cellules qui se trouvent a coté
          0
          1. 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
            1. Contributeur
              je suis pas très doué tu peux me l'incorporer au code précédent?
              0
              1. 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
                1. Contributeur
                  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
                  1. Contributeur
                    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
                    1. Range("A" + CStr(i) & ":K" + CStr(i)).Select

                      mettre un + à la place du &

                      0
                      1. Contributeur
                        j'ai essayer mais ca ne marche pas

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

                              je te tiens au courant
                              0
                              1. Contributeur
                                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
                                1. 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