Vba

Bonjour

en fait j'ai deux feuilles excel (dans deux fichiers différents)

sur l'une j'ai fait une liste de lots (L1;L2;L3 ) dans la feuille1 et dans l'autre j'ai créé un tableau dynamique dans une feuille2, l'un de ses champs est lot(cad ma liste L1;L2;L3)

ma question est que je voudrais à partir de ma première liste que j'ai créé dans la feuille 1, par exemple si je choisis L1 dans la feuille, que ça se génère automatiquement dans mon tableau dynamique et que ça soit les infos relatifs à L1

je ne sais pas si jai été assez claire

merci!

@++

naya
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. Contributeur
    Pour commencer, enregistre une macro pendant que tu fais à la main les manipulations que tu veux automatiser.
    0
    1. merci pour ta réponse c'est bien ce que j'ai fait!

      en fait pourrais tu me dire comment je peux renvoyer la dernière ligne non vide (et/ou la dernière cellule non vide)

      merci
      0
      1. Contributeur
        Tu peux me montrer le code que tu as, et expliquer pourquoi tu veux le changer ?
        Il me semble que ce que tu veux obtenir peut se faire tout simplement avec une macro enregistrée.
        0
    2. Bonjour

      merci pour ta réponse

      Sheets("Moyenne1").Activate
      Rows("6:700").Select
      Selection.Copy
      Sheets("Copie temp1").Activate
      Rows("1:1").Select
      ActiveSheet.Paste
      Range("A1").Select
      Application.CutCopyMode = False
      ActiveCell.FormulaR1C1 = ""
      ActiveWorkbook.Save
      Sheets("Copie temp1").Activate
      Range("A1").Select
      Selection.Columns.AutoFit
      Range("A1:I22").Select ' il faut remplacer I22 par la dernière cellule non vide

      En fait le tableau ci dessus est variant , c'est un tableau croisé dynamique
      dans l'exemple ci dessus c'est I22 la dernière cellule pleine mais si je change certains paramètre elle sera plus I22

      c'est pour que je veux faire un code avec une commande qui me permet de savoir la dernière cellule non vide

      Merci!
      0
      1. Contributeur
        Au lieu de la ligne Range("A1:I22").Select ' il faut remplacer I22 par la dernière cellule non vide
        ajoute le code suivant :

        Dim icol As Integer, irow As Integer
        irow = 1
        icol = 1

        Do While Cells(irow + 1, 1) <> ""
        irow = irow + 1
        Loop
        Do While Cells(1, icol + 1) <> ""
        icol = icol + 1
        Loop
        Range(Cells(1, 1), Cells(irow, icol)).Select

        End Sub
        0
        1. merci pour ta réponse!

          en fait j'ai inséré la lign e quivante dans mon code

          NbrLig3 = Sheets("Copie temp2").Cells(65536, Col).End(xlUp).Row

          et il me renvoit lerreur suivante :

          lindice n'apartient pas à la collection

          Merci!
          0
          1. c'est bon jai trouvé

            merci!

            sinon comment je peux renvoyer la première cellule d'une colonne?
            0
          2. Contributeur
            @naya85cells(1,col) avec col le numéro de la colonne.
            0
        2. merci pr ta réponse c'est très très gentil

          en fait jai fait la macro ci dessus dans le classeur "Copie temp2"

          Sub calcul()

          Dim NbrLig3 As Long

          cel1 = Application.Intersect(Range("B1:B100"), Range("A4:P4"))
          cel2 = Application.Intersect(Range("B1:B100"), Range("A6:P6"))
          cel3 = Application.Intersect(Range("B1:B100"), Range("A7:P7"))
          cel4 = Application.Intersect(Range("B1:B100"), Range("A9:P9"))

          NbrLig3 = Sheets("Copie temp2").Cells(65536, 1).End(xlUp).Row

          Rows(NbrLig3).Select
          ActiveWorkbook.Names.Add Name:="lig", RefersToR1C1:="='Copie temp2'! R&NbrLig3"

          Set isect1 = Application.Intersect(Range("B1:B100"), Range("lig"))

          End Sub

          elle me renvoi une erreur à la ligne
          Set isect1 = Application.Intersect(Range("B1:B100"), Range("lig"))
          comme quoi la méthode range ne marche pas

          en fait je pense que cela est dû à ma variable lig

          en fait lig est le nom d'une ligne grace à la ligne suivante

          ActiveWorkbook.Names.Add Name:="lig", RefersToR1C1:="='Copie temp2'! R&NbrLig3"

          Merci et à bientot!

          bonne journée
          0
          1. Contributeur
            set isect1=cell(nbrlig3,2)
            0
            1. merci bcp pour la réponse

              jai fais un long tour alors que cette ligne me permet de faire ce que je voulais :-)

              en fait jai un autre pb

              Sub Macro24()
              '
              ' Macro24 Macro
              ' Macro enregistrée le 23/06/2008 par LEMSSOUGUER Nadia
              '

              '
              Dim i As Integer

              For i = 1 To 20
              If (Cells(i, 1).Value = "Assignée" Or "Corrigée" Or "Livrée" Or "Prise en charge") Then
              Cells(i, 1).Activate
              With Selection.Interior
              .ColorIndex = 7
              .Pattern = xlSolid
              .PatternColorIndex = xlAutomatic
              End With
              End If

              Next i

              End Sub

              il me renvoit une erreur comme quoi les types de la ligne
              If (Cells(i, 1).Value = "Assignée" Or "Corrigée" Or "Livrée" Or "Prise en charge")

              sont incompatibles

              je voudrais savoir comment je pourrais corriger cette faute!

              Merci

              @+
              0
          2. Contributeur
            il faut plutot faire ainsi :

            If (Cells(i, 1).Value = "Assignée") Or (Cells(i, 1).Value ="Corrigée") Or (Cells(i, 1).Value ="Livrée") Or (Cells(i, 1).Value ="Prise en charge") )
            0
            1. merci bcp!
              0