Macro en probleme

Fermé
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 - Modifié par pijaku le 5/05/2015 à 12:04
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 5 mai 2015 à 21:37
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


A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
5 mai 2015 à 09:52
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
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 5
Modifié par Marie Chant le 5/05/2015 à 15:36
Bonjour,

J'ai refais mes devoirs. Voir plus bas.

Je te remercie de ton aide. J'en ai de besoin!
0
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 5
Modifié par Marie Chant le 5/05/2015 à 18:33
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
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 5
Modifié par Marie Chant le 5/05/2015 à 15:32
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
5 mai 2015 à 18:08
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
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 5
5 mai 2015 à 20:09
J'ai fait ce que tu m'a demandé Peux-tu m'aider s.v.p

Merci beaucoup
0
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 5
5 mai 2015 à 21:13
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
Marie Chant Messages postés 106 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 12 juillet 2024 5
5 mai 2015 à 21:14
voir plus haut pour ma macro merci beaucoup
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
5 mai 2015 à 21:37
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