Macro Excel vers Google Sheet (complexe)

Bonjour à tous,

Je me permet de vous solliciter suite aux difficultés que je rencontre sur une conversion Macro excel vers google sheet.

Voilà, j'ai un fichier excel qui me permet via une macro de générer un fichier PDF en fonction de différentes informations renseignées dans 2 feuilles excel.

une feuille appelée Fichier_interne, qui est complétée par un utilisateur, les infos de cette feuille sont déversées via des formules dans une feuille appeler Fichier_client.

Un bouton ensuite permet à l'utilisateur de générer un PDF, le fichier PDF se génère via les informations qui ont été constituées dans la feuille Fichier_client.

J'ai essayé de voir à convertir ça au format google sheet mais je dois avouer que c'est une gageure sans nom car je n'arrive pas à trouver des correspondances entre le VBA excel et le javascript de google (notamment ce qui est lié aux fonctions pures et à la génération d'un PDF avec création de répertoire automatique)

Si quelqu'un saurait m'aider, je ne suis même pas sur que ce soit faisable dans google sheet.

Ci joint mon code Macro excel

Merci encore !!

' Fonction de création de répertoire si non existant

Function RépertoireExiste(Chemin As String) As Boolean
On Error Resume Next
RépertoireExiste = GetAttr(Chemin) And vbDirectory
    If RépertoireExiste = True Then
        Exit Function
    Else
        MkDir (Chemin)
    End If
End Function

-------------------------------------------------------------------------

' Fonction permettant de checker si un fichier est déjà ouvert

Function FichierEstOuvert(ByRef FichierTeste As String) As Boolean
    Dim Fichier As Long
    On Error GoTo Erreur
    Fichier = FreeFile
    Open FichierTeste For Input Lock Read As #Fichier
    Close #Fichier
    FichierEstOuvert = False
    Exit Function
Erreur:
    FichierEstOuvert = True
End Function

-----------------------------------------------------------------------------

Sub Bouton18_Cliquer()
'
' Bouton18_Cliquer Macro
'

'indication du chemin de sauvegarde des PDF
 Dim chemsave As String
chemsave = "C:\TEST\"  '

' Controle si la valeur BM est présente (BM ne doit pas être présent)
   If Range("G3") = "BM" Then
    MsgBox ("Il ne s'agit pas d'une valeur  correcte !"), vbInformation, "Erreur"
     Exit Sub

                ' Controle si la valeur a été remplie 
                 ElseIf Range("K2") <> "AIR" And Range("K2") <> "HELIUM" And Range("K2") <> "DIAMANT" And Range("F46") = "" Then
                    MsgBox ("La valeur doit être remplie !"), vbInformation, "Erreur"
                 Exit Sub

                ' Controle si les taxes ont été remplies 
                 ElseIf Range("F49").Value = "" Then
                     MsgBox ("Les taxes doivent être renseignées en % !"), vbInformation, "Erreur"
                 Exit Sub

                ' Controle test si fichier pdf déjà ouvert
                 ElseIf FichierEstOuvert(chemsave & "FICHIER_CLIENT_" & Worksheets("fichier_Interne").Range("F2").Value & "_" & Worksheets("fichier_Client").Range("E5").Value & ".pdf") Then
                    MsgBox ("Un fichier PDF portant le même nom est déjà ouvert," & vbCrLf & _
                            "merci de le fermer avant de continuer !"), vbInformation, "Erreur"
                  Exit Sub

    Else 'Sinon on part dans la boucle de generation du PDF

'Je copie les valeurs de "fichier_Interne" vers "fichier_Client"

With Worksheets("Devis_Interne")
    Worksheets("fichier_Client").Range("D1").Value = .Range("F1").Value 'nom client
    Worksheets("fichier_Client").Range("E5").Value = .Range("E7").Value 'N° info
    Worksheets("fichier_Client").Range("D3").Value = .Range("F4").Value 'nom
    Worksheets("fichier_Client").Range("D4").Value = .Range("F5").Value 'prenom
    Worksheets("fichier_Client").Range("H3").Value = .Range("J4").Value 'tel
    Worksheets("fichier_Client").Range("H4").Value = .Range("J5").Value 'mail
    Worksheets("fichier_Client").Range("B15").Value = .Range("E9").Value 'titre de la demande
    Worksheets("fichier_Client").Range("J1").Value = DateValue(Now)
    Worksheets("fichier_Client").Range("B9").Value = .Range("K1").Value 'destinataire

End With

'Je met à jour le mode en fonction de la section remplie
    If UCase(Range("I7")) Like "BAN*" Then
            Worksheets("fichier_Client").Range("B11").Value = "MARITIME"
            ElseIf UCase(Range("J7")) Like "MAR*" Then
                Worksheets("fichier_Client").Range("B11").Value = "MARITIME"
            ElseIf UCase(Range("J7")) Like "ROU*" Then
                Worksheets("fichier_Client").Range("B11").Value = "ROUTE"
            ElseIf UCase(Range("J7")) Like "CAM*" Then
                Worksheets("fichier_Client").Range("B11").Value = "ROUTE"
            ElseIf UCase(Range("J7")) Like "AVI*" Then
                Worksheets("fichier_Client").Range("B11").Value = "AVION"
    Else
        MsgBox ("la Section doit être renseignée!"), vbInformation, "Erreur"
        Exit Sub

    End If

 Application.EnableEvents = True

Worksheets("fichier_Client").Visible = 1 'on rend la feuille fichier_Client visible afin de générer le PDF
Worksheets("fichier_Client").Activate

Call RépertoireExiste(chemsave) 'on appelle la fonction de création du repertoire si celui-ci n'existe pas

    Application.ScreenUpdating = False

   ' Generation du PDF
    ActiveSheet.PageSetup.PrintArea = "$A$1:$K$72"

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemsave & "FICHIER_CLIENT_" & Worksheets("fichier_Interne").Range("F2").Value & "_" & ActiveSheet.Range("E5").Value & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True

    Application.ScreenUpdating = True

    'MSG pour indiquer où se trouve le fichier
    MsgBox "Votre fichier se trouve à cet emplacement: " & chemsave & "FICHIER_CLIENT_" & Worksheets("fichier_Interne").Range("F2").Value & "_" & ActiveSheet.Range("E5").Value & ".pdf", vbInformation, "Convertir en PDF"

Worksheets("fichier_Interne").Activate 'on se repositionne sur la feuille fichier_Interne
Worksheets("fichier_Client").Visible = 0 'on remet la feuille fichier_Client en masquée

End If

End Sub
Rechercher des sujets similaires à "macro google sheet complexe"