Bonsoir
Je me suis attaqué à une VBA et j’ai un message d’erreur
Peux-tu m’aider?
Merci
Bonjour,
Vous utiliserez systématiquement l’instruction Set pour affecter un objet à une variable. Voici quelques exemples :
Dim plage As Range Set plage = Range(“A2:A9”) 'plage représente la plage A2:A9 Dim wb As Workbook Set wb = ActiveWorkbook 'wb représente le classeur actif Dim wb2 As Workbook Set wb2 = Workbooks.Add 'Ajout d’un classeur
Lorsque vous avez défini un objet, pensez à le libérer à la fin de la procédure en lui affectant la valeur Nothing :
Set feuille = Nothing Set plage = Nothing Set wb = Nothing Set wb2 = Nothing
EXEMPLE MACRO:
Sub bb()
Dim MonFichier As Workbook
'###
'--- Ouvre le classeur externe ---
Set MonFichier = GetObject("c:\test.xls") ' Chemin à adapter
MonFichier.Windows(1).Visible = True
'--- Copie la plage A1:H50 de la feuille 1 du classeur externe ---
MonFichier.Sheets(1).Range("a1:h50").Copy
'###
'--- Le classeur appelant qui contient la macro ---
With ThisWorkbook
.Activate
'--- Colle dans la feuille 2 cellule de destination B2 ---
.Sheets(2).Select
.Sheets(2).[b2].Select
ActiveSheet.Paste
End With
'--- Vide le presse papiers ---
Application.CutCopyMode = False
'###
'--- Ferme le classeur externe et vide la mémoire ---
MonFichier.Close False
Set MonFichier = Nothing
End Sub
Merci MIMIMATHY
Je vais travailler tout ça et avancer sur le sujet.
Je ne sais pas ce qu’il faut faire sur la page pour remercier
Merci
Bonjour MIMIMATHY
Je voudrais envoyer une valeur dans une autre feuille et d’un autre classeur
j’ai essayé mais ça ne marche pas pourtant cette formule a déjà fonctionné, mais c’était dans le même classeur (voir les modèles en bas)
A bientôt
Re,
Teste comme ceci
Sub ARCHIVATION()
Dim Journal As Workbook, ligne%
Set Journal = GetObject("F:\Documents..........................")
'Journal.Windows(1).Visible = True 'Pour rendre le classeur visible
ligne = Journal.Sheets("Liste").Range("A2").End(xlDown).Row + 1
Journal.Sheets("Liste").Range("A" & ligne).Value = ActiveWorkbook.Sheets("DEVIS").Range("L13").Value
Journal.Close True 'Ferme le classeur en l'enregistrant
Set Journal = Nothing 'Libère la mémoire
End Sub
Re
J’ai toujours une erreur
je t’envoie le fichier « DEVIS » et « JOURNAL » pour que tu vois en réel.
Aussi le msg d’erreur
02.DK DEVIS-CHIFFRAGE 2020.xlsm (512,1 Ko) JOURNAL DEVIS.xlsx (9,7 Ko)
Re
Teste
Sub ARCHIVATION()
Dim Journal As Workbook, ligne%
Application.ScreenUpdating = False
Set Journal = GetObject("F:\Documents\01.DK.PLAC'ART_QUOTIDIEN\02.DEVIS_FACTURES\2020 DEVIS\JOURNAL\JOURNAL DEVIS.xlsx")
Journal.Windows(1).Visible = True 'Pour rendre le classeur visible
'(Détermine la ligne à renseigner)
ligne = Journal.Sheets("Liste").Range("A2").End(xlDown).Row + 1
ThisWorkbook.Sheets("DEVIS").Activate
Journal.Sheets("Liste").Range("A" & ligne).Value = Sheets("DEVIS").Range("L13").Value
Journal.Close True 'Ferme le classeur en l'enregistrant
Set Journal = Nothing 'Libère la mémoire
End Sub
Hello MIMIMATHY
Ca fonctionne, mais j’ai du enlever la dernière formule « Set Journal = Nothing »
Car ça n’a pas ajouter la ligne dans le JOURNAL mais remplacé la dernière
C’était pour te donner l’info, mais ça marche
Un grand merci
Ps je ne sais pas comment remercier sur le site!
Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.