Comparatif de deux fichiers Excel et vérification d'erreurs avec VBA

Bonjour,

Je débute avec la structure de VBA. J'ai besoin de comparer la structure de deux fichiers et de vérifier l'intégrité de données Excel. Je ne connais pas grand chose à VBA, j'avais déjà réalisé une application Flask en Python pour réaliser les opérations mais on m'a fait savoir que ça serait mieux pour eux d'avoir une macro donc voilà. Je travaille sous format texte et l'erreur est erreur 13 : invalid type ici, si vous avez une idée de la cause de cette erreur s'il vous plaît

image
16vba-test.txt (39.02 Ko)

Merci d'avance pour votre aide.

bonjour,

Pour simplifier un peu (car la gestion des date sous Excel et VBA est complexe), voici un test de date la plupart du temps suffisante.

Sub test()
Dim birthdate As Long
birthdate = ActiveCell.Value2
If Not IsDate(CDate(birthdate)) Then MsgBox ("pas ok")
End Sub

Toutefois Excel et VBA considère que tout mois de 41 jours est valide... Donc VBA validera un 30 février ou un 31 Aout...

Pour aller plus loin, il faudrait faire une macro bien plus complexe qui testerait l'année bissextile ou pas et les mois de 30 jours...

Nota : Cette réponse ne considère que les dates après le 1er Janvier 1900

A+

Indépendamment de ce qui est dit plus haut, je remarque que dans votre code :

Sub ValidateEventDates(ws As Worksheet, startDateColumn As String, endDateColumn As String, sheetName As String, ByRef report As String)
    Dim lastRow As Long, i As Long
    Dim startDate As Date, endDate As Date

    ' Find the last row of data
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Loop through the rows to validate start and end dates
    For i = 2 To lastRow
        On Error Resume Next
        startDate = CDate(ws.Cells(i, ws.Columns(startDateColumn).Column).value)
        endDate = CDate(ws.Cells(i, ws.Columns(endDateColumn).Column).value)

startDateColumn est défini en string or vous l'utilisez en argument de colonne pour Cells ce qui ne peut convenir

Une syntaxe du type

startDate = CDate(ws.Cells(i, startDateColumn).value

serait déjà plus crédible. Toutefois je vous recommande celle précisé plus haut (Déclaration en Long et Value2

A+

Bonjour à tous

Probablement faisable avec Powerquery

Mais sans exemples impossible de donner une solution

Bonjour,

J'ai réussi à débugger les erreurs et j'ai mon rapport d'erreurs qui est output.

De ma compréhension PowerQuery n'est pas vraiment adapté à ce que je veux faire. Les transformations sur les données doivent être faites en semi automatique, et les données sont d'un nombre assez faible (maximum des milliers de lignes). Les transformations en automatique ne seront probablement même pas faites car cela risque de réduire la qualité des données.

Je pense que le sujet est clos, merci de votre temps, je vous souhaite une bonne journée.

Rechercher des sujets similaires à "comparatif deux fichiers verification erreurs vba"