Problème de Sub

Signaler
-
Messages postés
33197
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2021
-
bonjour,

je suis débutant avec VBA/Excel j'ai écris ce code mais je ne sais pas comment l'organiser
en faite je veux ouvrir un fichier, insérer une ligne, incrémenter la cellule de la colonne A, et fair un copier coller d'un ActiveWorkbook.Name

voici ce code:

Sub CopierColler()
Application.ScreenUpdating = False
Rep = "C:\Users\toshiba\Desktop\TRADING\Historical"
FichD = ActiveWorkbook.Name
FichS = "Adwya.xlsm"

Sub test()
Workbooks.Open Rep & FichS
Rows("5:5").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
[A5] = [A6] + 1
End Sub

With Workbooks(FichD)
.Sheets("Fundamentals").Range("C5:G5").Copy _
Workbooks(FichS).Sheets("Feuil1").Range("C9:F9").End(xlUp).Offset(1, 0)
Workbooks(FichS).Save
Workbooks(FichS).Close
End With

End Sub

merci

4 réponses

Messages postés
33197
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2021
351
Bonjour,

Déjà il faudrait ne pas mettre un sub au milieu d'un autre...

Sub CopierColler() 
Application.ScreenUpdating = False 
Rep = "C:\Users\toshiba\Desktop\TRADING\Historical" 
FichD = ActiveWorkbook.Name 
FichS = "Adwya.xlsm" 

'Sub test()  <<<---- ERREUR ?
Workbooks.Open Rep & FichS 
Rows("5:5").Select 
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
[A5] = [A6] + 1 
' End Sub <<<---- ERREUR ?

With Workbooks(FichD) 
.Sheets("Fundamentals").Range("C5:G5").Copy _ 
Workbooks(FichS).Sheets("Feuil1").Range("C9:F9").End(xlUp).Offset(1, 0) 
Workbooks(FichS).Save 
Workbooks(FichS).Close 
End With 

End Sub


Enuite :
1 - Utiliser la coloration syntaxique lorsque l'on poste un message sur le forum en utilisant les balses de CODE.

2 - Nous indiquer le souci rencontré dans ton programme.





Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Déjà il faut que tu déclare tes variable, même si le VBA tolère qu'on utilise des variables non déclarer c'est ... vraiment pas propre

Ensuite il faut savoir qu'une variable à une "portée", soit une partie dans le code où elle est existante.

Si tu déclare une variable dans une fonction (function) ou une procédure (sub) alors elle ne sera utilisable que dans cette partie. Pour avoir une variable utilisable dans tout le fichier il faut la déclarer directement dans ce fichier.
Par exemple :
Sub Exemple1()
   Dim VaraiablePourExemple1 as string
   '...
End sub

Cette variable ne sera utilisable que dans Exemple1

Dim VariablePourExemple2
Sub Exemple2()
   '...
End sub

Cette variable sera utilisable dans tout le fichier

Néanmoins c'est sale car si une fonction modifie cette variable, elle sera aussi modifier pour toutes les autres fonctions (ce qui n'est pas forcément ton but).

Il est donc possible de passer des paramètre à tes fonction
Sub ExempleAvecParam(byval/byref Variable as string)
   '...
End sub

byval veux dire que la variable est propriétaire de la fonction appelée, soit si elle est modifier dans la fonction/procédure alors la variable présente dans l'appel ne sera pas modifier

byref veux dire que la variable est propriétaire de la fonction appelante, soit si elle est modifier dans la fonction alors la variable présente dans l'appel sera modifier.

Exemple :
Sub Test1()
   Dim VarByVal As String
   Dim VarByRef As String
   VarByVal = "ByVal"
   VarByRef = "ByRef"
   SousFonction VarByVal, VarByRef
   MsgBox "VarByVal " & VarByVal & vbCrLf & "VarByRef " & VarByRef
End Sub

Sub SousFonction(ByVal MaVar1 As String, ByRef MaVar2 As String)
   MaVar1 = "Je fait des modif"
   MaVar2 = "Je fait des modif"
End Sub



Enfin bref je sait pas si je suis très claire.

Tente de modifier ton code et renvoie le ;)
Si tu n'y arrive pas je te filerais un coup de main

Amicalement
Merci poure votre précieuses remarques, c'est pris en considération et enfin ca marche
Messages postés
33197
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2021
351
pensez a mettre le sujet en resolu si la reponse vous convient.


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICIp