Bonjour,
Peut-on retourner un tableau de string avec une fonction dans une macro excel
Voici le code :
La fonction IndexFDMTITLE_DSSTEPORDER permet de récupérer le numéro de la colonne et de la ligne où la cellule a pour valeur DS_STEP_ORDER.(RowDS_STEP_ORDER et ColDS_STEP_ORDER)
Elle permet aussi de récupérer le numéro de la colonne où la cellule a pour valeur FDM_TITLE.(ColFDM_TITLE)
Enfin, je souhaiterais également récupérer le numéro de la dernière cellule non vide avec la variable LastCol
J'ai donc inséré toutes ces variables dans un tableau de string que je souhaiterais utiliser dans ma macro globale. (function test()). J'obtiens malheureusement un message d'erreur lors de l'execution de la fonction
Avez vous une solution ?
Merci de votre aide , ci joint le fichier de test
Peut-on retourner un tableau de string avec une fonction dans une macro excel
Voici le code :
Code:
Private Function test()
'Accéder aux 4 variables de la fonction IndexFDMTITLE_DSSTEPORDER'
test = IndexFDMTITLE_DSSTEPORDER()
MsgBox LastCol
End Function
Public Function IndexFDMTITLE_DSSTEPORDER() As String()
'Determiner les index des colonnes FDM_TITLE et DS_STEP_ORDER'
'0: ColDS_STEP_ORDER'
'1: RowDS_STEP_ORDER'
'2: ColFDM_TITLE'
'3: LastCol'
Dim cell As Range
Dim exist_STEP_ORDER As Boolean
Dim ColFDM_TITLE As Long
'Initialisation des variables'
exist_STEP_ORDER = False
ColFDM_TITLE = 1
With ActiveSheet
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
For Each cell In Range(Cells(1, 1), Cells(1, LastCol))
If cell.Value = "DS_STEP_ORDER" Then
ColDS_STEP_ORDER = cell.Column
RowDS_STEP_ORDER = cell.Row
exist_STEP_ORDER = True
End If
If cell.Value = "FDM_TITLE" Then
Nombre_en_Lettre (cell.Column)
ColFDM_TITLE = cell.Column
End If
Next cell
If exist_STEP_ORDER = True Then
Cells(RowDS_STEP_ORDER, ColDS_STEP_ORDER).EntireColumn.Delete
ColFDM_TITLE = ColFDM_TITLE - 1
End If
IndexFDMTITLE_DSSTEPORDER(0) = ColDS_STEP_ORDER
IndexFDMTITLE_DSSTEPORDER(1) = RowDS_STEP_ORDER
IndexFDMTITLE_DSSTEPORDER(2) = ColFDM_TITLE
IndexFDMTITLE_DSSTEPORDER(3) = LastCol
MsgBox Nombre_en_Lettre(ColFDM_TITLE)
End Function
Function Nombre_en_Lettre(Nombre As Long) As String
If Nombre > 0 And Nombre < 257 Then
Nombre_en_Lettre = Split(Cells(Nombre).Address, "$")(1)
Else
Nombre_en_Lettre = Error(9) '> Valeur hors contexte
End If
End Function
La fonction IndexFDMTITLE_DSSTEPORDER permet de récupérer le numéro de la colonne et de la ligne où la cellule a pour valeur DS_STEP_ORDER.(RowDS_STEP_ORDER et ColDS_STEP_ORDER)
Elle permet aussi de récupérer le numéro de la colonne où la cellule a pour valeur FDM_TITLE.(ColFDM_TITLE)
Enfin, je souhaiterais également récupérer le numéro de la dernière cellule non vide avec la variable LastCol
J'ai donc inséré toutes ces variables dans un tableau de string que je souhaiterais utiliser dans ma macro globale. (function test()). J'obtiens malheureusement un message d'erreur lors de l'execution de la fonction
Avez vous une solution ?
Merci de votre aide , ci joint le fichier de test
Pièces jointes
Dernière édition: