Macro en probleme

Marie Chant Messages postés 147 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je n'arrive pas a faire ce que doit faire ma macro

J'aurais besoin de votre aide s.v.p.

Ce que je veux c'est de faire une copie de la feuille factures
Supprimer la ligne 1 et 2 de la feuille factures (2)
Insérer un filtre a la ligne 1 feuille factures (2)
Sélectionner dans la colonne I AVRIL-15 et Y dans la colonne AF
Supprimer les lignes qui renferme ses deux conditions
remettre les données disponibles
Venir sélectionner les comptes 60", "61", "62", "63", "70", "90", "110", "120"de la colonne U
Venir copier sur la feuille 3 le résultat
Changer le nom de la feuille 3
FAIRE UN TABLEAU CROISÉ DYNAMYQUE CLASSIQUE DE cette FEUILLE

Mon problème est que quand dans la colonne AF il y a des N,elle me les enleve aussi mais je ne veut pas.
Dans la colonne AF il y a des Y des N et des cases vides.

Je veux les cases N et les vides aussi tant qu'il y a quelque chose d'écris dans la conne A

Mon nombre de lignes varie d'un mois a l'autre

je vous remercie de votre aide cela est apprécié

Voici ma macro qui m'enlève les N dans la conne AF

Sheets("factures").Select
    Sheets("Extrait des factures").Copy Before:=Sheets(1)
    Rows("1:2").Select
    Selection.Delete Shift:=xlUp
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("factures (2)").AutoFilter.Sort. _
        SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
Dim Dernligne As Long
Dernligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For n = Dernligne To 1 Step -1
If Range("I" & n) = "AVRIL-15" And Range("Af" & n) = "Y" Then
Rows(n & ":" & n).Select
Selection.Delete Shift:=xlUp
End If
End [/contents/446-fichier-sub Sub]
    Range("U1").Select
    ActiveSheet.Range("$A$1:$AK$50000").AutoFilter Field:=21, Criteria1:=Array( _
        "60", "61", "62", "63", "70", "90", "110", "120"), [/download/telecharger-34082790-operator Operator]:=xlFilterValues
    Cells.Select
    Range("R1").Activate
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste

    Sheets("Feuil3").Select
    Sheets("Feuil3").Name = "fact.60à120"
    Sheets("Ext.fact.510060à624760").Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "fact.60à120!R1C1:R1048576C37", Version:= _
        xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil4!R3C1", _
        TableName:="Tableau croisé dynamique1", DefaultVersion:= _
        xlPivotTableVersion14
    Sheets("Feuil4").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Apparenté")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nom du fournisseur")
        .Orientation = xlRowField
        .Position = 2


3 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Lorsque tu mets une macro utilises la bannière code sinon c'est illisible.
    Ton problème est assez ésotérique :
    Mon problème est que quand dans la colonne AF il y a des N,elle me les enleve aussi mais je ne veut pas.
    ...
    Voici ma macro qui m'enlève les N dans la conne AF

    ???
    0
    1. Marie Chant Messages postés 147 Statut Membre 9
       
      Bonjour,

      J'ai refais mes devoirs. Voir plus bas.

      Je te remercie de ton aide. J'en ai de besoin!
      0
    2. Marie Chant Messages postés 147 Statut Membre 9
       
      Vioci mon fichier http://cjoint.com/?0EfsM2ah3Jm

      Sheets("factures").Select
      Sheets("factures").Copy Before:=Sheets(1)
      Rows("1:2").Select
      Selection.Delete Shift:=xlUp
      Rows("1:1").Select
      Selection.AutoFilter
      ActiveWorkbook.Worksheets("factures (2)").AutoFilter.Sort. _
      SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:= _
      xlAscending, DataOption:=xlSortNormal
      Dim Dernligne As Long
      Dernligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
      For n = Dernligne To 1 Step -1
      If Range("I" & n) = "AVRIL-15" And Range("Af" & n) = "Y" Then
      Rows(n & ":" & n).Select
      Selection.Delete Shift:=xlUp
      End If
      Range("U1").Select
      ActiveSheet.Range("$A$1:$AK$50000").AutoFilter Field:=21, Criteria1:=Array( _
      "60", "61", "62", "63", "70", "90", "110", "120"), Operator:=xlFilterValues
      Cells.Select
      Range("R1").Activate
      Selection.Copy
      Sheets.Add After:=Sheets(Sheets.Count)
      ActiveSheet.Paste

      Sheets("Feuil3").Select
      Sheets("Feuil3").Name = "fact.60à120"
      Sheets("Ext.fact.60à120").Select
      Sheets.Add
      ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
      "fact.60à120!R1C1:R1048576C37", Version:= _
      xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil4!R3C1", _
      TableName:="Tableau croisé dynamique1", DefaultVersion:= _
      xlPivotTableVersion14
      Sheets("Feuil4").Select
      Cells(3, 1).Select
      With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
      "Parents")
      .Orientation = xlRowField
      .Position = 1
      End With
      With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
      "Nom du fournisseur")
      .Orientation = xlRowField
      .Position = 2
      
      

      Je voudrais que ma macro
      1- fasse une copie de la feuilles "Factures"
      2- supprime les deux premieres lignes de la feuille Factures (2)
      3- insérer un filtre
      4- filtrer a la colonne I les Avr-15 et dans la colonne AF les Y seulement
      5- supprimer le résultat
      6-enleve le filtre
      7- remettre le filtre
      8- inserer une colonne apres c
      9- mettre ma formule en D2 recherche v et la descendre jusqu'en bas(ma meme nombre de lignes d'un mois a l'autre)
      10-filtreer en AF les comptes 60", "61", "62", "63", "70", "90", "110", "120 seuelemnt)
      11- venir compier le résultat sur la feuille apres soit feuille 3
      12- changer le nom de la feuille et faire un tableau croisé dynamique option affichage classique.
      merci beaucoup de votre aide
      0
  2. Marie Chant Messages postés 147 Statut Membre 9
     
    Je m'excuse

    je vois que je ne suis pas claire dans ma demande.

    J'essaie ce matin de faire le ficher mais je n'y arrive plus elle me bloque a For n.

    Ce que je voudrais que la macro fasse est
    - Une copie de la feuille Factures
    - De la feuille Factures (2) supprime les deux premiere lignes
    -Insere un filtre sur la premiere ligne
    - Selectionne dans la colonne I les AVR-15 et dans la colonne AF les Y
    Supprime les lignes qui rempli ses deux conditions
    - Remet visible ce qui reste sur la feuille
    - Insere une colonne apres la C
    -Nomme la Parents et faire la recherche V(=RECHERCHEV(C111;'Liste des fournisseurs apparent'!A:E;4;FAUX)
    -Va a la colonne U 1 selectionne les comptes 60,70,90,110,120,130,140
    copie le resultat de la feuille sur une autre soit (feuille 3)
    Renomme la feuille et faire un tableau croisé dynamique de cette feuille.

    Voici ma macro qui ne fonctionne pas je ne sais pas ou je me suis trompé.

    Elle me mets en erreur a For n Erreur de compilation: Variable non définie
    de plus elle m'enleve les n dans la colonne Af et je veux les garder.

    heets("Factures").Select
    Sheets("Factures").Copy Before:=Sheets(1)
    Rows("1:2").Select
    Selection.Delete Shift:=xlUp
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Factures (2)").AutoFilter.Sort. _
    SortFields.Clear
    ActiveWorkbook.Worksheets("Factures (2)").AutoFilter.Sort. _
    SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Factures (2)").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    Dim Dernligne As Long
    Dernligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    For n = Dernligne To 1 Step -1
    If Range("A" & n) <> "" And Range("I" & n) = "AVR-15" And Range("Af" & n) = "Y" Then
    Rows(n & ":" & n).Select
    Selection.Delete Shift:=xlUp
    End If
    Next n
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Parents"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-1],'Liste parent'!C[-3]:C[1],4,FALSE)"
    Range("D2").Select
    Selection.AutoFill Destination:=Range("D2:D5000")
    Range("D2:D5000").Select

    Range("U1").Select
    ActiveSheet.Range("$A$1:$AK$50000").AutoFilter Field:=21, Criteria1:=Array( _
    "60", "70", "90", "110", "120", "130", "140"), Operator:=xlFilterValues
    Cells.Select
    Range("R1").Activate
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
    '
    Sheets("Feuil3").Select
    Sheets("Feuil3").Name = "fact 60à140"
    Sheets("fact de 60à140").Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "fact 60à140!R1C1:R1048576C37", Version:= _
    xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil4!R3C1", _
    TableName:="Tableau croisé dynamique1", DefaultVersion:= _
    xlPivotTableVersion14
    Sheets("Feuil4").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
    "Parents")
    .Orientation = xlRowField
    .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
    "Nom du fournisseur")
    .Orientation = xlRowField
    .Position = 2
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
    PivotTables("Tableau croisé dynamique1").PivotFields("Montant CAN"), _
    "Montant CAN", xlCount
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Compte")
    .Orientation = xlColumnField
    .Position = 1
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Apparenté"). _
    Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
    False, False)
    With ActiveSheet.PivotTables("Tableau croisé dynamique1")
    .InGridDropZones = True
    .RowAxisLayout xlTabularRow
    End With
    Columns("A:A").EntireColumn.AutoFit
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
    "Nombre Montant CAN")
    .Caption = "Somme de Mnt ligne CND"
    .Function = xlSum
    End With
    '
    ' Macro13 Macro'
    Columns("C").Select
    ActiveSheet.UsedRange.EntireColumn.Select
    Selection.NumberFormat = _
    "_ * #,##0.00_ [$$-C0C]_ ;_ * -#,##0.00 [$$-C0C]_ ;_ * ""-""??_ [$$-C0C]_ ;_ @_ "
    End Sub

    J'ai un fichier que je peux vous faire parvenir.

    Merci beaucoup de votre aide
    0
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Tu as sans doute bien essayé d'utiliser la bannière code mais sans grand succès : il faut, par exemple, sélectionner ta macro avant de cliquer sur le bouton.
    ActiveSheet.UsedRange.EntireColumn.Select
    Selection.NumberFormat = _
    "_ * #,##0.00_ [$$-C0C]_ ;_ * -#,##0.00 [$$-C0C]_ ;_ * ""-""??_ [$$-C0C]_ ;_ @_ "
    End Sub 

    Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
    0
    1. Marie Chant Messages postés 147 Statut Membre 9
       
      J'ai fait ce que tu m'a demandé Peux-tu m'aider s.v.p

      Merci beaucoup
      0
    2. Marie Chant Messages postés 147 Statut Membre 9
       
      Voici mon fichier http://cjoint.com/?0EfsM2ah3Jm

      <code>Sheets("factures").Select Sheets("factures").Copy Before:=Sheets(1) Rows("1:2").Select Selection.Delete Shift:=xlUp Rows("1:1").Select Selection.AutoFilter ActiveWorkbook.Worksheets("factures (2)").AutoFilter.Sort. _ SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:= _ xlAscending, DataOption:=xlSortNormalDim Dernligne As LongDernligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).RowFor n = Dernligne To 1 Step -1If Range("I" & n) = "AVRIL-15" And Range("Af" & n) = "Y" ThenRows(n & ":" & n).SelectSelection.Delete Shift:=xlUpEnd If Range("U1").Select ActiveSheet.Range("$A$1:$AK$50000").AutoFilter Field:=21, Criteria1:=Array( _ "60", "61", "62", "63", "70", "90", "110", "120"), Operator:=xlFilterValues Cells.Select Range("R1").Activate Selection.Copy Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Paste Sheets("Feuil3").Select Sheets("Feuil3").Name = "fact.60à120" Sheets("Ext.fact.60à120").Select Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "fact.60à120!R1C1:R1048576C37", Version:= _ xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil4!R3C1", _ TableName:="Tableau croisé dynamique1", DefaultVersion:= _ xlPivotTableVersion14 Sheets("Feuil4").Select Cells(3, 1).Select With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _ "Parents") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _ "Nom du fournisseur") .Orientation = xlRowField .Position = 2<code>

      Je voudrais que ma macro
      1- fasse une copie de la feuilles "Factures"
      2- supprime les deux premieres lignes de la feuille Factures (2)
      3- insérer un filtre
      4- filtrer a la colonne I les Avr-15 et dans la colonne AF les Y seulement
      5- supprimer le résultat
      6-enleve le filtre
      7- remettre le filtre
      8- inserer une colonne apres c
      9- mettre ma formule en D2 recherche v et la descendre jusqu'en bas(ma meme nombre de lignes d'un mois a l'autre)
      10-filtreer en AF les comptes 60", "61", "62", "63", "70", "90", "110", "120 seuelemnt)
      11- venir compier le résultat sur la feuille apres soit feuille 3
      12- changer le nom de la feuille et faire un tableau croisé dynamique option affichage classique.
      merci beaucoup de votre aide
      0
    3. Marie Chant Messages postés 147 Statut Membre 9
       
      voir plus haut pour ma macro merci beaucoup
      0
    4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      C'est un peu tard pour moi, je regarderai demain de plus près mais ta macro est curieuse avec des expressions surprenantes comme
      End [/contents/446-fichier-sub Sub]
      qui m'intriguent...
      0