Avis extérieur
Bonjour, j'ai un problème et je ne sais pas comment m'y prendre pour le résoudre ainsi je fais appel à votre aide pour m'en sortir . L'erreur 1004 apparait sur une macro quand je la lance or je ne parvient pas à détecter mon erreur.
Je dois faire correspondre 2 tableaux qui ont en commun le numéro de matricule concatener les colonnes correspondantes des tableaux de manières à avoir les informations des 2 tableaux qui coincident sur un troisème tableau à condition que sur la ligne le matricule soit le même et que la date de début coincide à plus ou moins 3 jours.
Ma Synthaxe est la suivante :
Sub Correspondance2()
'definition des variables
Dim I As Long
Dim J As Long
Dim H As Long
Dim Lignefin As Long
Dim Matricule As String
Dim DDC As Date
Dim DDWF As Date
Dim K As Long
'ligne sur laquelle on va commencer à coller les données
H = 2
'ligne sur laquelle on va chercher
K = 2
DDC = Sheets("FR03").Cells(K, 5).Value
DDWF = Sheets("WF").Cells(I, 10).Value
'définit la dernière ligne sur laquelle il y aura des données à analyser
Sheets("WF").Select
Range("A1048575").Select
Selection.End(xlUp).Select
'lignefin sera égale à la valeur de la ligne de la cellule selectionnée
Lignefin = ActiveCell.Row
Matricule = Sheets("FR03").Cells(K, 1).Value
'début de la première boucle pour trouver les lignes contenant la ville
For I = 2 To Lignefin Step 1
'si la cellule contient la valeur il va en line1 sinon en line2 ou la boucle se poursuit.
If Sheets("WF").Cells(I, 2).Value = Matricule Then GoTo Line1 Else GoTo Line2
Line1:
'début de a deuxième boucle qui va copier coller les données entre la colonne 1 et la 17ème
For J = 1 To 25 Step 1
If DDWF - DDC >= 3 Then
Sheets("Compilation").Cells(H, J).Value = Sheets("WF").Cells(I, J).Value & Sheets("FR03").Cells(K, J)
End If
'la boucle continue pour l'alimentation de l'onglet conso
Next J
'fin de la deuxième boucle on rajoute une ligne pour que les données se collent dans la ligne suivante dans l'onglet Conso
H = H + 1
Line2:
Next I
K = K + 1
Sheets("FR03").Select
Cells(K, 1).Select
End Sub
Voyez vous une erreur ?Des axes d'améliorations dans la synthaxe ?
Merci d'avance pour vos réponses <3
Bonjour et bienvenue sur le forum
Ce serait beaucoup plus simple si tu pouvais joindre ton fichier, même avec des noms bidons si nécessaire...
Bye !
Bonjour , merci de ton acceuil , j'ai modifié les documents pour garder la confidentialité.
J'ai besoin de faire correspondre les références du fichier faux noms avec celles de l'autre fichier sous conditions que les dates soient les mêmes à 3 jours près. Et si ces conditions sont remplis concaténer les colonnes correspondantes . au tableau fichier faux noms
Bonjour
Quelques questions :
Comment faire ? les données des colonnes "Références" sur les 2 fichiers n'ont rien de commun.J'ai besoin de faire correspondre les références du fichier faux noms avec celles de l'autre fichier
Peux-tu donner un exemple du résultat attendu ?si ces conditions sont remplis concaténer les colonnes correspondantes . au tableau fichier faux noms
Bye !
Bonjour,
je suppose que tu reçois l'erreur sur cette ligne. La variable I n'est pas initialisée et donc vba lui attribue la valeur 0. 0 qui n'est pas une valeur correcte pour les paramètres de cells().
DDWF = Sheets("WF").Cells(I, 10).Value
Tout d'abbord merci de vos réponses.
h2so4 en effet c'était sur cette ligne j'ai d'ailleurs changé mon code :
Sub Correspondance2()
'definition des variables
Dim I As Long
Dim J As Long
Dim H As Long
Dim Lignefin As Long
Dim Matricule As String
Dim K As Long
Dim DD As Date
H = 2
Sheets("WFE").Select
Range("A100000").Select
Selection.End(xlUp).Select
Lignefin = ActiveCell.Row
For K = 1 To Lignefin
Matricule = Sheets("FR03").Cells(K, 1).Value
DD = Sheets("FR03").Cells(K, 5).Value
For I = 2 To Lignefin
If Sheets("WFE").Cells(I, 2).Value Like Matricule And Sheets("WFE").Cells(I, 6).Value <= DD + 3 Then GoTo Line1 Else GoTo Line2
Line1:
For J = 1 To 10
Sheets("Compilation").Cells(H, J + 2).Value = Sheets("WFE").Cells(I, J).Value
Next J
H = H + 1
Line2:
Next I
Next K
Sheets("FR03").Select
Cells(K, 1).Select
End Sub
Mais même comme cela , il ne se lance pas pour erreur d'incompatibilité.
gmb :
Il y a des références communes mais la difficulté est que celle du fichier faux noms ne sont pas toutes dans l'autre et qu'elles ne sont pas à la même place dans la matrice.
Ainsi le résultat attendu serait la reférence du premier document dans la première colonne de la feuil "compilation" ,date de début dans la deuxième colonne , référence dans la troisième et le reste du tableau dans les autres colonnes.
gmb :
Sur le fichier Faux noms les références correspondent au matricule du 2 ième fichier , je sais pas si ça répond à ta question .
Je reste à votre disposition si vous avez besoin de plus de détails
Comme je te l'ai déjà demandé, ce qu'il me faudrait c'est un exemple du résultat attendu...
Bye !
Désolé de ne pas avoir pu répondre avant mais voilà ce que je voudrais idéalemment. Avec évidemment la colonne référence qui correspond au bon matricule. La difficulté réside dans le fait qu'il y a 4 cas de figure , le fichier faux nom est enregitré en comptabilité et donc au mois tandis que l'autre est enregistré en fonction du nombre d'arrêt ( 1 référence=1 arrêt) donc les 4 cas de figures sont :
- 1 matricule dans le fichier faux noms correspond à 1 unique référence dans l'autre.
- PLusieurs matricule dans le fichier faux noms correspondent à une unique référence dans l'autre
- plusieurs réféences dans l'autre correspondent à 1 unique matricule dans le fichier faux noms
Cela est-il clair ?