Bonjour,
J’ai créé une macro, hélas lorsque je lance le bouton d’exécution, celle ci ne va pas jusqu’au bout et me sort en réponse uniquement les titres de mon tableau de départ.
Voici la macro en question , est ce que quelqu’un verrait où est mon erreur ? Merci d’avance pour vos réponses et votre aide !
sub essai1_macro_finale()
dim oClasseur as object, oFeuilleDep as object, oPlageDep as object
dim oFeuilleArr as object, oCellArr as object, oCellCrit as object
dim oFiltre as object
dim oCellCrit2 as object
dim oCellCrit3 as object
dim oCellCrit4 as object
dim oDonnees as object
dim oChampFiltre0 (0) As New com.sun.star.sheet.TableFilterField
dim oChampFiltre1 (1) As New com.sun.star.sheet.TableFilterField
oClasseur = thisComponent 'défini le classeur courant
oFeuilleDep = oClasseur.Sheets.getByName(“Donnees”)
oPlageDep = oFeuilleDep.getCellRangeByName(“A1:L1”) 'sélectionner la plage de cellule de titre à prendre en compte
oFeuilleArr = oClasseur.Sheets.getByName(“Param”)
oCellArr = oFeuilleArr.getCellRangeByName(“I7”) 'cellule où copier le résultat
oFeuilleArr.copyrange(oCellArr.CellAddress, oPlageDep.rangeAddress)
oPlageDep = oFeuilleDep.getCellRangeByName(“A1:L16”) 'sélection de la plage de données de départ
oFiltre = oPlageDep.createFilterDescriptor(true) 'création de l’outil de filtrage et affectation à la zone à filtrer
oCellCrit = oFeuilleDep.getCellRangeByName(“I3”) 'selection de la case du critere 1
oCellCrit2 = oFeuilleDep.getCellRangeByName(“J3”) 'selection de la case du critere 2
oCellCrit3 = oFeuilleDep.getCellRangeByName(“K3”)
oCellCrit4 = oFeuilleDep.getCellRangeByName(“L3”)
with oChampFiltre1(0)
.Field = 8 'numero de la colonne à trier (0=A)
.IsNumeric = true 'critere numerique
.Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL 'choix de l’opérateur
.NumericValue = oCellCrit.value 'choix de la case du critere
end with
with oChampFiltre1(0)
.Connection = com.sun.star.sheet.FilterConnection.AND
.Field = 8 'numero de la colonne à trier (0=A)
.IsNumeric = true 'critere numerique
.Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL 'choix de l’opérateur
.NumericValue = oCellCrit2.value 'choix de la case du critere
end with
with oChampFiltre1(1)
.Connection = com.sun.star.sheet.FilterConnection.AND 'opérateur entre les deux conditions
.Field = 9 'numero de la colonne à trier
.IsNumeric = true
.Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL
.NumericValue = oCellCrit3.value 'choix de la case du critère
end with
with oChampFiltre1(1)
.Connection = com.sun.star.sheet.FilterConnection.AND 'opérateur entre les deux conditions
.Field = 9 'numero de la colonne à trier
.IsNumeric = true
.Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL
.NumericValue = oCellCrit4.value 'choix de la case du critère
end with
with oFiltre
.UseRegularExpressions = true
.ContainsHeader = true
.CopyOutputData = true 'copie les résultats du filtrage
.OutputPosition = oFeuilleArr.getCellRangeByName(“I7”).CellAddress 'definition d’une adresse qui sera celle de l’arrivée de mon filtrage
.setFilterFields(oChampFiltre1())
end with
oPlageDep.filter(oFiltre)
oFeuilleArr.columns.getByName(“I”).OptimalWidth=true 'optimiser la largeur de colonne
oFeuilleArr.columns.getByName(“T”).OptimalWidth=true 'optimiser la largeur de colonne
end sub