[vba] excel, fonction copy destination ne marche pas

cs_emlyd2207 Messages postés 12 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 24 novembre 2011 - 24 nov. 2011 à 10:41
cs_emlyd2207 Messages postés 12 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 24 novembre 2011 - 24 nov. 2011 à 13:24
bonjour,
mon code ne marche pas au niveau de la fonction copy destination.
J'ai essayé avec ces 3 codes mais ça bloque toujours au niveau de ma variable Vcellulebas et je ne comprends pas pourquoi :

Selection.Copy Destination:=ThisWorkbook.Worksheets("mvtsvalorises").Vcellulebas
ou
Selection.Copy Destination:=ThisWorkbook.Worksheets("mvtsvalorises").Range(Vcellulebas)
ou
Selection.Copy Destination:=ThisWorkbook.Worksheets("mvtsvalorises").Range("Vcellulebas")

Ma macro entière est :

Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 23/11/2011 par renouxe

ThisWorkbook.Worksheets("mvtsvalorises").Activate

Dim Vcellulebas As Range

Range("A1").End(xlDown).Select

ActiveCell.Offset(1, 0).Select

Set Vcellulebas = ActiveCell

Workbooks("mvtsprod.txt").Activate

ThisWorkbook.Worksheets("mvtsvalorises").Activate

Range("A1").Select

Selection.Copy Destination:=ThisWorkbook.Worksheets("mvtsvalorises").Vcellulebas
'copie les données texte dans le fichier excel

End Sub

Merci d'avance pour votre aide
Emlyd

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
24 nov. 2011 à 11:11
Bonjour,

Une fois de plus dans la section non correspondant à ton outil de développement et avec un code non présenté entre les balises code !
J'attends au moins que tu mettes maintenant ton code entre ces balises. A toi de voir si tu vas le faire ou non, ce petit effort. Je verrai ensuite !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_emlyd2207 Messages postés 12 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 24 novembre 2011
24 nov. 2011 à 11:23
section non correspondante ... ??? Si cela veut dire que ce n'est pas le bon thème, désolé, mais je ne sais pas faire la différence entre VB.net VB 2005 et visual basic. Je travaille en tant que débutant sur le VBA d'Excel, c'est tout ce que je sais. De plus, les balises code, je ne sais pas plus ce que cela veut dire, sachant que j'ai fait un copier-coller de tout le code de mon module, que faut-il faire de plus pour avoir un peu d'aide. Je ne viens pas souvent sur codes sources, mais c'est toujours à propos de vba d'excel, et je n'ai jamais eu ce genre de remarques. Désolé si je ne suis pas à la hauteur des autres utilisateurs du site, on fait c'qu'on peut !
Merci d'avance de votre tolérance envers ceux qui sont obligés d'utiliser ces outils dans leur cadre professionnel sans avoir été formés au préalable.
Cordialement

Emlyd
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
24 nov. 2011 à 11:30
Alors :
1) tu parcours les thèmes de ce forum. VBA n'est pas, loin s'en faut, VB.Net. La section correspondant à ton outil de développement a pour titre "
Visual Basic 6 > Langages dérivés > VBA
2) tu fais glisser ta souris sur les icônes dans le bandeau au-dessus de la fenêtre où tu rédiges un message ===>> regarde les infobulles ===>> l'une d'entre elles dit "code" et te propose une liste .

Pour mettre entre balises code : c'est exactement comme pour la plupart des outils Windows (y compris Word) : tu sélectionnes ton code et tu clique sur la balise !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
24 nov. 2011 à 11:33
Bonjour,

pour mettre le code entre balise,tu développes le combo (troisième en partant de la droite) et ton selectionnes ton language ensuite tu mets ton code entre les balises code=language et /code.

Pour ton problème tu dis
ça bloque toujours au niveau de ma variable Vcellulebas


Ca veut dire quoi ? Tu as un message d'erreur ?

Bonne journée


Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
24 nov. 2011 à 12:49
J'ai trouvé deux problèmes ou je n'ai pas tous compris:


Sub Macro5() 
' 
' Macro5 Macro 
' Macro enregistrée le 23/11/2011 par renouxe 

ThisWorkbook.Worksheets("mvtsvalorises").Activate 

Dim Vcellulebas As Range 

Range("A1").End(xlDown).Select 

ActiveCell.Offset(1, 0).Select 

Set Vcellulebas = ActiveCell '(A)



Workbooks("mvtsprod.txt").Activate 

ThisWorkbook.Worksheets("mvtsvalorises").Activate '(B)

Range("A1").Select 

Selection.Copy Destination:=ThisWorkbook.Worksheets("mvtsvalorises").Vcellulebas '(C)
'copie les données texte dans le fichier excel 

End Sub 


Jusque (A) c'est bien tu défini un range en dessous des données déja importées dans ton xlsm contenant ta macro.

Ce Range tu le nommes Vcellulebas

Ensuite en (B) tu réactives ton fichier xlsm pourquoi ?

Dans la ligne
Selection.Copy Destination:=ThisWorkbook.Worksheets("mvtsvalorises").Vcellulebas


Destination doit représenter une région.

VcelluleBas est une région définie dans ton programme mais ne fait pas partie de ThisWorkbook.Worksheets("mvtsvalorises")

donc tu dois simplement coder :

Selection.Copy Destination:=Vcellulebas


De plus fais attention car on ne voit nulle part l'endroit ou tu sélectionnes les données de Workbooks("mvtsprod.txt")

tu Active le Worksheet mais pas un range à copier.

Bonne journée





Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
cs_emlyd2207 Messages postés 12 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 24 novembre 2011
24 nov. 2011 à 13:24
super, ça marche. Merci à cgandco et à ucfoutu
Je donne quelques détails supplémentaires : cette macro était un extrait de la macro complète sur laquelle je travaille. Cette macro va chercher des données dans un fichier texte qu'elle copie dans un fichier excel mais dans une cellule qui peut varier de place.
Pour ceux que cela intéresse, ci-dessous la macro comlète :

Sub Extractbis()
'
' Macro d'extraction des mvts de prod
' Macro enregistrée le 23/11/2011 par renouxe

    Workbooks.OpenText FileName:="U:\Compta\Renoux\Download\mvtsprod.txt", _
        Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
        Array(Array(0, 1), Array(5, 1), Array(7, 1), Array(13, 1), Array(14, 1), Array(30, 1), _
        Array(49, 1), Array(76, 1), Array(80, 1), Array(84, 1), Array(89, 1), Array(93, 1), Array( _
        97, 1))
    'ouvre le fichier .txt extrait d'un rapport
    
    Range("A1:A62").EntireRow.Delete
    Range("B1").EntireColumn.Delete
    Range("C1").EntireColumn.Delete
    Range("E1").EntireColumn.Delete
    Range("B1").EntireColumn.Insert Shift:=xlToRight
    Range("C1").EntireColumn.Insert Shift:=xlToRight
    Range("E1").EntireColumn.Insert Shift:=xlToRight
    Range("F1").EntireColumn.Cut
    Range("I1").Insert Shift:=xlToRight
    'mise en forme du fichier texte

    Range("A1").Value = "Type Doc"
    Range("B1").Value = "N° Article"
    Range("C1").Value = "Description"
    Range("D1").Value = "Clé G/L"
    Range("E1").Value = "Emplact"
    Range("F1").Value = "Ct/Px Total"
    Range("G1").Value = "Date G/L"
    Range("H1").Value = "Qté Trans."
    Range("I1").Value = "Explication Transaction"
    'mise en forme des titres de colonnes
    
    Range("D2").EntireRow.Delete
    Range("D2").Select
    Range("D2").EntireRow.Delete
    Range("D2").Select
    'mise en forme n°2 du fichier texte
    
    For i = 2 To 10000
        If Cells(i, 1) = "Total" Then
        Exit For
    ElseIf Cells(i, 1) = "Type" Then
            Range(Cells(i - 2, 1), Cells(i + 2, 1)).EntireRow.Delete
            i = i - 2
    End If
    Next
    'suppression des entetes de pages du rapport
    
    Range("D2").Select
    For i = 2 To 10000
        If Cells(i, 1) = "Total" Then
        Range(Cells(i, 1), Cells(i + 1, 1)).EntireRow.Delete
        Exit For
    ElseIf Cells(i + 3, 1) = "Sum" And Cells(i + 2, 1) <> "Total" Then
            Cells(i + 3, 4) = Cells(i, 4)
            Rows(i).EntireRow.Delete
            i = i - 1
    ElseIf Cells(i, 1) <> "Sum" Then
            Rows(i).EntireRow.Delete
            i = i - 1
    End If
    
    Next
    'suppression des lignes inutiles
    
    ThisWorkbook.Worksheets("mvtsvalorises").Activate
    'on revient sur le fichier Excel qui doit être alimenté par le fichier .txt
    
    Dim Vcellulebas As Range
    'création de la variable correspondant à la dernière cellule sasie de la colonne A du fichier Excel
    
    Range("A1").End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    Set Vcellulebas = ActiveCell
    'code pour chercher la variable
    
    Workbooks("mvtsprod.txt").Activate
    'on revient sur le fichier texte pour prendre les valeurs à copier
    
    Range("A2:J25").Select
    Selection.Copy Destination:=Vcellulebas
    'copie les données texte dans le fichier excel

    Workbooks("mvtsprod.txt").Activate
    Workbooks("mvtsprod.txt").Close
    'fermeture du fichier texte
    
    ThisWorkbook.Worksheets("mode d'emploi").Activate
    'retour sur fichier excel, onglet de pilotage des macros
 
End Sub



Emlyd
0