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
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
A voir également:
- Macro en probleme
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
- Télécharger macro excel chiffre en lettre dinars algerien ✓ - Forum Excel
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
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
???
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
???
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
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
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
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
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.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
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.
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
5 mai 2015 à 20:09
J'ai fait ce que tu m'a demandé Peux-tu m'aider s.v.p
Merci beaucoup
Merci beaucoup
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
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
<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
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
5 mai 2015 à 21:14
voir plus haut pour ma macro merci beaucoup
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
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
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...
Modifié par Marie Chant le 5/05/2015 à 15:36
J'ai refais mes devoirs. Voir plus bas.
Je te remercie de ton aide. J'en ai de besoin!
Modifié par Marie Chant le 5/05/2015 à 18:33
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