Appel fonction VBA

Fermé
Meliodas54 Messages postés 13 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 21 mars 2016 - 18 janv. 2016 à 11:56
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 18 janv. 2016 à 23:29
Bonjour,

Afin de simplifier le code de ma macro VBA (excel), j'aimerais remplacer la répétition de plusieurs lignes par une fonction qui fait le même travail. Mais je n'arrive pas à la faire fonctionner: pouvez vous m'aider ?

Voici le code initial :

WDoc.Tables(1).Cell(5, 4).Range.Copy 'copie la valeur dans le presse papier
ws.Select 'bascule vers Excel
ws.Cells(i, c).PasteSpecial (xlPasteValues) 'colle la valeur dans la cellule
ws.Cells(i, c).Value = Replace(ws.Cells(i, c), ":", "") 'Supprime les ":"
ws.Cells(i, c).Value = Trim(ws.Cells(i, c)) 'Supprime les espaces à gauche et à droite de la chaine de caractère
c = c + 1

La fonction pour la remplacer:

Public Sub extraction(table As Integer, ligne As Integer, colonne As Integer)
WDoc.Tables(table).Cell(ligne, colonne).Range.Copy
ws.Select
ws.Cells(i, c).PasteSpecial (xlPasteValues)
ws.Cells(i, c).Value = Replace(ws.Cells(i, c), ":", "")
ws.Cells(i, c).Value = Trim(ws.Cells(i, c))
c = c + 1
End Sub

Mon appel:

extraction 1, 2, 2 ou call extraction (1,2,2)

Merci pour votre aide

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 716
18 janv. 2016 à 23:29
Bonjour,

Pour que cela fonctionne, il te faut une définition de WDoc et ws
dans des variables "Public" sinon elles sont inconnues dans ta fonction.
Avec cela, normalement ton idée devrait fonctionner.
0