SOS !! Problème ByRef [VBA] [Résolu/Fermé]

Signaler
Messages postés
75
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
15 novembre 2010
-
Messages postés
75
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
15 novembre 2010
-
Bonjour a tous !
J'ai un Souci sur VBA qui me prends beaucoup de temps et je n'en ai malheureusement plus beaucoup ...
Voici le code de mon userform.
Mon souci:
Lorque je clique sur OK je recois le message d'erreur suivant:
erreur de compilation:
Type d'argument ByRef incompatible

j'ai commencé VBA il y a deux semaines et je ne comprends pas pourquoi j'obtienss cela c'est pourquoi je me tourne vers vous ...

Option Explicit
Public DestWs As Worksheet

Private Sub OK_Click()
Dim pos, pl, i, startrow As Integer
Dim ws2 As Worksheet
pos = InStr(1, RefEdit1.Value, "!")
    If pos Then
        Set ws2 = Worksheets(Left(RefEdit1.Value, pos - 1))
    pl = 1
    For i = 1 To Réel.selection.ListCount
    startrow = 1
    pl = copiercoller(ws2, Réel.selection.List(i - 1), pl)
    Next i
        Unload Me
    ElseIf ws2 Is Nothing Then
        MsgBox "Veuillez choisir une feuille destination", vbExclamation
    End If
End Sub


Private Sub Parcourir_Click()
Dim i As Integer
    Réel.selection.Clear
    'Demande de selection des fichiers
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show
        For i = 1 To .SelectedItems.Count
            Réel.selection.AddItem (.SelectedItems(i))
        Next i
    End With
End Sub

Function copiercoller(file As String, ByVal from As Integer, ByVal ws2 As Worksheet)
    Dim ws, aws As Worksheet
        Workbooks.OpenText Filename:= _
            file, _
            Origin:=xlMSDOS, startrow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
            Array(9, 1), Array(10, 1)), DecimalSeparator:=",", TrailingMinusNumbers:=True
    For Each ws In ActiveWorkbook.Worksheets
        ' A row for reference to the source file
        Dim memfrom As Integer
        memfrom = from
        ' Copy/Paste
        Range(ws.Cells(1, 1), ws.Cells.SpecialCells(xlLastCell)).Copy
        aws.Paste Destination:=aws.Cells(from, 1)
        ' calculate next line
        from = from + ws.Cells.SpecialCells(xlLastCell).row
    Next ws
    ActiveWorkbook.Close Savechanges:=False
    copiercoller = from
End Function



Vos réponses me seront d'une aide précieuse...
D'avance merci
mimi_1990

PS: Si vous trouvez d'autres incohérences dans mon code n'hésitez pas tout conseil est bon a prendre !

2 réponses

Messages postés
75
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
15 novembre 2010
14
up !
Messages postés
75
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
15 novembre 2010
14
Bon c'est bon j'ai trouvé c'est juste que mon ws2 quand j'appelais ma fonction copier coller dans le OK_Click n'est pas a la bonne place !

il fallait faire :
pl = copiercoller(Réel.selection.List(i - 1), pl, ws2)


et dans ma fonction copiercoller il fallait echanger aws par ws2 et ws par aws (ou autrechose)