Poser votre question
0

Erreur d'exécution basic dans une macro

posée 2019-06-27 16:12:45 +0200

Image Gravatar de leastu

updated 2019-06-27 17:43:35 +0200

Image Gravatar de pierre-yves samyn

Bonjour,

Je souhaite exécuter une macro sous libre office calc, dont voici les codes ci-dessous. En revanche un message d'erreur apparaît : "Erreur d'exécution BASIC. Variable d'objet non définie." De plus quand je vérifie ma macro avec l'outil pas à pas, ça m'indique que l'erreur se situe à la deuxième ligne. (pourtant ma feuille se nomme bien Feuil1 dans mon fichier)

Quelqu'un aurait la solution ? Est-ce le code en lui même qui est faux/non adapté à LibreOffice ?

Sub filtre()
Feuil1.Activate
Feuil1.Range("A1,B1").Select
Selection.Copy
Sheets("Feuil2").Select
Range("A1:B1").PasteSpecial
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Range("C4").Select
Sheets("Feuil1").Select
Application.CutCopyMode = False
Feuille1.Range("A3").Select
Sheets("Feuil2").Select
Sheets("Feuil1").Range("A1:B15").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Feuil1").Range("H6:K7"), CopyToRange:=Sheets("Feuil2").Range("A1:B1"), Unique:=False
End Sub
éditer requalifier signaler fermer fusionner supprimer

1Réponse

0

répondue 2019-06-27 16:55:01 +0200

Image Gravatar de pierre-yves samyn

updated 2019-06-29 07:31:50 +0200

Bonjour

Est-ce le code en lui même qui est faux/non adapté à LibreOffice ?

Oui, le basic LibreOffice n'est pas le VBA

[Ajout]

Ci-dessous ce que cela pourrait donner en basic LibreOffice.

  • copie de cellules et optimisation des tailles de colonne : en principe résultat identique
  • pour le filtre, ne disposant pas de tes données (critères) je montre comment filtrer la plage A1:B15 (feuille1) pour ne garder que ce qui commence par A en colonne A. Le résultat est copié en feuille2.A1 comme dans ta macro.

Ci-dessous le code:

sub filtrePys()

dim oClasseur as object, oFeuilleDep as object, oPlageDep as object
dim oFeuilleArr as object, oCellArr as object
dim oFiltre as object
dim oChampFiltre(0) As New com.sun.star.sheet.TableFilterField   

oClasseur = thisComponent
oFeuilleDep = oClasseur.Sheets.getByName("Feuil1")
oPlageDep = oFeuilleDep.getCellRangeByName("A1:B1")
oFeuilleArr = oClasseur.Sheets.getByName("Feuil2")
oCellArr = oFeuilleArr.getCellRangeByName("A1")

oFeuilleArr.copyrange(oCellArr.cellAddress, oPlageDep.rangeAddress)

oFeuilleArr.columns.getByName("A").OptimalWidth=true
oFeuilleArr.columns.getByName("B").OptimalWidth=true


oPlageDep =  oFeuilleDep.getCellRangeByName("A1:B15")
oFiltre = oPlageDep.createFilterDescriptor(true)

with oChampFiltre(0)
    .Field = 0
    .IsNumeric = false          
    .Operator = com.sun.star.sheet.FilterOperator.EQUAL
    .StringValue = "a.*"  
end with    

with oFiltre                        
    .UseRegularExpressions = true           
    .ContainsHeader = true                      
    .CopyOutputData = true                                                                      
    .OutputPosition = oFeuilleArr.getCellRangeByName("A1").CellAddress
    .setFilterFields(oChampFiltre())
end with

oPlageDep.filter(oFiltre)

end sub

Voir C:\fakepath\Filtrer.ods

[Ajout 29-06-19 07:30]

Voir nouvelle version avec les modifications demandées : C:\fakepath\Filtrer.ods

Cordialement

éditer signaler supprimer permalien plus

Commentaires

Bonjour, merci pour votre rapide retour. La macro fonctionne à présent et je vous en remercie encore.

Cependant mes critères seront des nombres. J'ai donc essayer de noter true à la place de false à la ligne IsNumeric et d'insérer un chiffre en critère mais cela ne fonctionne pas et je ne trouve pas la manip. De même est-il possible de rentrer dans StringValue une case correspondante dans le tableau ? J'ai essayé de noter "F1" dans la macro en mettant le critère "a.*" dans la case F1 mais en vain.

Désolé je suis novice en macro ! encore merci de votre aide !!! :)

Image Gravatar de leastuleastu ( 2019-06-28 11:25:14 +0200 )éditer

@leastu voir nouvelle version dans ma réponse...

Image Gravatar de pierre-yves samynpierre-yves samyn ( 2019-06-29 07:32:39 +0200 )éditer

Bonjour, Merci beaucoup pour votre aide, ma macro fonctionne à merveille, j'ai même réussi à ajouter des critères supplémentaires ! Je vous remercie encore !

Image Gravatar de leastuleastu ( 2019-07-04 15:12:26 +0200 )éditer
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2019-06-27 16:12:45 +0200

Consultée: 17 fois

Mise à jour: Jun 29