Bonjour Raphaël,
je ne comprends pas ce qui distingue une méthode d'une fonction. J'ai l'impression que mes limites demanderaient trop de pédagogie et donc trop de temps de ta part
Alors en résumé tout codes VBA se trouvent dans des procédures (soit Sub soit Function) qui elles mêmes se trouvent dans un ou des modules.
L'enregistreur de macros crée une procédure Sub dans un module qu'il crée s'il n'existe pas
Personnellement dans 80% des cas je crée des procédures Function qui ont l'avantage de pouvoir être utilisée comme une méthode ou comme une fonction (qui renvoie une valeur)
Le plus bel exemple est la fonction VBA MsgBox
MsgBox "Appuyer sur Ok pour lancer le programme"
ou
Response = MsgBox("Attention vous allez supprimer les données. Confirmer ?", vbCritical + vbYesNo + vbDefaultButton2)
Dans le second cas la fonction renverra à la variable Response le numéro correspondant au bouton Yes ou No et dans le premier cas, elle se contente d'afficher le message et attend que l'on clique sur OK
Etapes à suivre
- Insertion d'un module standard dans le classeur devant contenir la procédue
- Copier la fonction ExportTable proposée dans la contribution
- Coller celle-ci dans le module précédemment créé
- Créer une nouvelle procédure qui va l'invoquer
ton code permettrait-il de rassembler dans une même feuille de synthèse les données des feuilles de type A en ignorant les autres ?
Bien entendu mais ce n'est pas la procédure elle même qui va se charger de faire la sélection. Elle attend juste qu'on lui passe les bons paramètres voir le premier fil de ma contribution où tout est expliqué
Il faut juste indiquer la feuille source, la feuille cible ainsi que les arguments optionnel ValueOnly et ClearSheet si les valeurs pas défaut ne coniennent pas.
C'est donc dans la procédure appelante qu'il faut faire la sélection des feuilles sources à copier à l'aide
d'une structure conditionnelle telle que If Then Else ou Select Case (que je privilégie) à l'intérieur d'une structure répétitive (For To Next ou For Object Each In Collection)
Exemple de procédure appelante
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Sub ExportTableExemple_1()
' La feuille "cible" et les feuilles "source" sont dans le même classeur
' Les feuilles à copier doivent avoir les 3 premiers caractères commençant par mvt qu
Dim shtTarget As Worksheet
Dim sht As Worksheet
Dim Count As Integer
Set shtTarget = ThisWorkbook.Worksheets("Export")
For Each sht In ThisWorkbook.Worksheets
Select Case Left(LCase(sht.Name), 3)
Case "mvt"
Count = Count + 1
ExportTable sht, shtTarget, ValueOnly:=True, ClearSheet:=Count = 1
End Select
Next
End Sub |
Partager