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

9classeur2.xlsx (585.85 Ko)
11fichier-faux-nom.xlsx (514.97 Ko)

Bonjour

Quelques questions :

J'ai besoin de faire correspondre les références du fichier faux noms avec celles de l'autre fichier

Comment faire ? les données des colonnes "Références" sur les 2 fichiers n'ont rien de commun.

si ces conditions sont remplis concaténer les colonnes correspondantes . au tableau fichier faux noms

Peux-tu donner un exemple du résultat attendu ?

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
et enfin plusieurs matricule pour plusieurs référence( mais pas forcément le même nombre de ligne).

Cela est-il clair ?

6exemple.xlsx (658.24 Ko)
Rechercher des sujets similaires à "avis exterieur"