Vba

naya85 Messages postés 27 Statut Membre -  
naya85 Messages postés 27 Statut Membre -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Pour commencer, enregistre une macro pendant que tu fais à la main les manipulations que tu veux automatiser.
    0
  2. naya85 Messages postés 27 Statut Membre
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. naya85 Messages postés 27 Statut Membre
     
    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
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. naya85 Messages postés 27 Statut Membre
     
    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. naya85 Messages postés 27 Statut Membre
       
      c'est bon jai trouvé

      merci!

      sinon comment je peux renvoyer la première cellule d'une colonne?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > naya85 Messages postés 27 Statut Membre
         
        cells(1,col) avec col le numéro de la colonne.
        0
  7. naya85 Messages postés 27 Statut Membre
     
    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
  8. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    set isect1=cell(nbrlig3,2)
    0
    1. naya85 Messages postés 27 Statut Membre
       
      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
  9. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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. naya85 Messages postés 27 Statut Membre
       
      merci bcp!
      0