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 SubBiz