Correction code VBA

Bonjour,

Dans le but de faire un encodage du nombre d'accident selon les répartitions de zone j'ai voulu faire un workbook afin de recenser les données dont le premier onglet est un formulaire prévu pour transposer les données.

le code me renvoit une run-time error 1004 : Application-defined or object-defined error au niveau de la ligne qui permet de sélectionné la première ligne vide dans l'onglet

je vous copie le code ci-dessous :

Sub accident()

Dim ws As Worksheet
Set ws = Sheets("formulaire")

' Copier la plage A2:C2
ws.Range("A2:C2").Copy

' Récupérer la valeur de la cellule J6 comme nom de feuille
Dim NomFeuille As String
NomFeuille = ws.Range("J6").Value

' Vérifier si l'onglet existe
If Not WorksheetExists(NomFeuille) Then
MsgBox "L'onglet '" & NomFeuille & "' n'existe pas dans ce classeur.", vbExclamation, "Erreur"
End If

' Trouver la dernière ligne

Range("A2").End(xlDown).Offset(1, 0).Select

' Coller les valeurs à la dernière ligne
ws.Cells(LastRow + 1, "A").PasteSpecial Paste:=xlPasteValues

' Effacer le contenu des cellules spécifiques

Sheets("formulaire").Select

ws.Range("C6").ClearContents
ws.Range("C9").ClearContents
ws.Range("G9").ClearContents
End Sub

Function WorksheetExists(ByVal wsName As String) As Boolean
On Error Resume Next
WorksheetExists = Not Sheets(wsName) Is Nothing
On Error GoTo 0
End Function

Je vous ai également mis le fichier en copie

Merci d'avance pour votre aide

Bien à vous

Benoît

Bonjour,

Tu ne t'aides pas beaucoup à ce que l'on t'aide : macros dans un fichier de macros personnelles, fichier sans aucune donnée, classeur avec des liaisons externes.

Oufff,

Il faudra attendre un fichier : "Prise 2". ;- ))

Biz

Arf , j’ai pensé à retirer les données personnelles sans penser à donner de la matière , je fais une version 2 avec un minimum d’informations au plus vite

Désolé

j'ai mis une fausse base de données et enregistré le module dans la f

euille

Bonjour,

Teste ce code, il est plus rapide.

Sub accident()
Dim NomFeuille As String
Dim Ws As Worksheet
Dim DerLig As Long

Set Ws = Worksheets("formulaire")

' Récupérer la valeur de la cellule J6 comme nom de feuille
NomFeuille = Ws.Range("J6").Value

' Vérifier si l'onglet existe
If Not WorksheetExists(NomFeuille) Then
   MsgBox "L'onglet '" & NomFeuille & "' n'existe pas dans ce classeur.", vbExclamation, "Erreur"
Else
   ' Trouver la dernière ligne
   DerLig = Worksheets(NomFeuille).Range("A1").End(xlDown).Row + 1

   ' Écrire les valeurs dans la feuille concernée
   Worksheets(NomFeuille).Range("A" & DerLig & ":C" & DerLig).Value = Ws.Range("A2:C2").Value
End If

' Effacer le contenu des cellules spécifiques
Ws.Range("C6").ClearContents
Ws.Range("C9").ClearContents
Ws.Range("G9").ClearContents

End Sub

Biz

merci

Rechercher des sujets similaires à "correction code vba"