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
    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") )
    1. merci bcp!
  2. Contributeur
    set isect1=cell(nbrlig3,2)
    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

      @+
  3. 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
    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!
      1. c'est bon jai trouvé

        merci!

        sinon comment je peux renvoyer la première cellule d'une colonne?
      2. Contributeur
        @naya85cells(1,col) avec col le numéro de la colonne.
    2. 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
      1. 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!
        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
          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.
        2. Contributeur
          Pour commencer, enregistre une macro pendant que tu fais à la main les manipulations que tu veux automatiser.