Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Erreur de syntaxe Basic - Type de donnees Worksheet inconnu -


Sujet :

OpenOffice & LibreOffice

  1. #1
    Candidat au Club
    Erreur de syntaxe Basic - Type de donnees Worksheet inconnu -
    Bonjour

    Quand j'exécute la macro suivante
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub RenameFile()
    '
    ' RenameFile Macro
     
    '
        Dim iMaxCnt, iColCnt, iRowCnt  As Integer
        Dim NewName, NewCount
        Dim  stRow, OldName, FileNewNam as Variant
        Dim ws As Worksheet
    '

    j'obtiens le message "erreur de syntaxe…."
    si je supprime la tabulation qui se trouve avant Dim ws As Worksheet, ça marche. Pouvez-vous me dire ce qui ne va pas.

    Merci

  2. #2
    Membre régulier
    Code un peu court
    Bonsoir,

    C' est un peu court. Il faudrait le code pour voir ou se situe le problème.

    Cordialement

  3. #3
    Membre expert
    Bonjour,

    Un peu court mais avec plusieurs anomalies.

    Worksheet est un objet VBA, il n'est utilisable avec OoBasic que si le module commence par :
    Option VBASupport 1 .

    Mais je pense qu'il est préférable de s'en tenir aux objets OoBasic, par exemple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    Dim ws as Object
      ws =  = ThisComponent.Sheets.getByName("Feuille1")


    Et dans la ligne :
    Dim iMaxCnt, iColCnt, iRowCnt As Integer .
    seul iRowCnt est Integer,
    En absence de typage, iMaxCnt et iColCnt sont des Variant
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Candidat au Club
    Bonjour
    Désolée de vous répondre aussi tard, mais j'ai eu des problèmes de sante.
    Voici le code

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub RenameFile
    '
    ' RenameFile Macro
    ' Macro recorded 8/17/2007 by mseymat100480
    '
    '	Option VBASupport 1
    	Dim iMaxCnt As Integer
    	Dim iColCnt As Integer 
    	Dim iRowCnt  As Integer
        Dim NewName As String
        Dim NewCount  As Integer
        Dim stRow As Variant 
        Dim OldName As Variant
        Dim FileNewName As Variant
    	Dim ws As Worksheet
    '  
    '
    ' Macro recorded by mcs
    '
    	Set ws = Sheets("Parameters")
        PathFile = ws.Range("B1").Value
        NewName = ws.Range("B2").Value
     
     
        Set ws = Sheets("Sheet1")
     
     
    ' Find how many rows are existing in the sheet.
    '
        iRowCnt = 1
     
    '    PathFile = "C:\Documents and Settings\mseymat100480\My Documents\photos_200708\jj\"
     
    	iRowCnt =  Range("A65536").End(xlUp).Row    
     
    	iRowCnt =  iRowCnt - 1
        For i = 1 To iRowCnt
            strRow = "A" + Trim(Str(i))
            OldName = ""
            OldName = PathFile & ws.Range(strRow).Value
            FileNewName = PathFile & NewName & Trim(Str(i))& ".jpg"
            Name OldName As FileNewName
        Next i
    	MsgBox ("OK")
     
     
     
    End Sub

    En fait mon gros problème c'est que ça marche si la première fois que je rentre de la macro, je change la tabulation de la 1ere ligne après les Dim.…

    merci de votre aide

  5. #5
    Membre expert
    Bonjour

    Utilises ce code OoBasic, au lieu de VBA dont la compatibilité est incertaine.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
    Sub RenameFile
    '
     Dim wsh As Object           'feuille
     Dim rng As Object           'plage de cellules
     Dim tZT As Variant          'tableau des zones textes
     Dim pth As String           'chemin
     Dim msg As String           'message    
     Dim oldName As String       'ancien nom 
     Dim newName As String       'nouveau nom
     Dim oldFile As String       'ancien fichier       
     Dim newFile As String       'nouveau fichier
     Dim pLZ as Long             'première ligne zone
     Dim dLZ as Long             'dernière ligne zone
     Dim ix1 as Long             'index1
     Dim ix2 as Long             'index2
     Dim ix3 as Long             'index3
     
        ' Chemin et nouveau nom
        wsh =  ThisComponent.Sheets.getByName("Parameters")
        pth = wsh.getCellRangeByName("B1").String
        newName = wsh.getCellRangeByName("B2").String
        ' Analyser chaque cellule contenant du texte dans la colonne A 
        wsh =  ThisComponent.Sheets.getByName("Sheet1")
        rng = wsh.getCellRangeByName("A:A")
        tZT = rng.QueryContentCells(com.sun.star.sheet.CellFlags.STRING).RangeAddresses
        For ix1 = 0 to uBound(tZT)
            pLZ = tZT(ix1).StartRow
            dLZ = tZT(ix1).EndRow
            For ix2 = pLZ to dLZ
                oldName = wsh.getCellByPosition(0, ix2).String
                oldFile = pth & oldName
                If dir(oldFile) = oldName then  
                    ix3 = ix3 +1
                    newFile = pth & newName & ix3 & ".jpg"
                    name oldFile As newFile  
                Else
                    msg = msg & chr(10) & "- " & oldName
                End If   
            Next ix2
        Next ix1
        If msg = "" Then 
            MsgBox "OK"
        Else
            MsgBox "Fichiers non trouvés : " & msg
        End If
     
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Candidat au Club
    Merci de votre reponse.
    Bonjour

    Merci de votre reponse. Ca marche impeccable.

    Mcs