Macro de mise a jour
bonjour,
j'ai deux fichiers. 1 avec toutes les données dans un certain ordre (extraction de logiciel), et 1 qui reprend mais seulement certaines colonnes. j'ai réussi a créer l'ouverture du fichier, copier coller en onglet 2 de mon récap. et maintenant je souhaite qu'il vérifie dans que mon récap soit soit juste sinon il le met à jour.
mais dès la premiére ligne ça coince. quelqu'un peut m'aider.
erreur 438 sur ma ligne 4.
je pense pas que pour ce blocage voir les tableau soit vraiment utile. sinon dites le moi.
voici le début du code:
Sub MAJRECAP()
'feuille a mettre à jour
FeuilR = ActiveWorkbook.Sheets("Feuil1")
'macro ouvrir ARAGO
'macro copier ARAGO
'macro coller ARAGO en feuille 2
'feuille des données exportées
FeuilD = ActiveWorkbook.Sheets("Feuil2")
'déclaration des varibles
Dim r As Long
Dim a As Long
Dim T As Long
'recherche des données "nom" de la feuil2 dans la feuille 1
LastRowA = FeuilD.Cells.Find("*", ActiveSheet.Range("L1"), , , xlByRows, xlPrevious).Rows
LastRowD = FeuilR.Cells.fond("*", ActiveSheet.Range("E1"), , , xlByRows, xlPrevious).Rowsj'ai besoin d'aide ! merci d'avance.
j'ai réussi la 1ere partie maintenant il bloque sur mon next a car soit disant pas de For.
ça fait des années que j'ai pas fait de vba et là j'aurais vraiment besoin d'une lumiere car comment lui dire que si il trouve pas la donnée r dans a il passe au a suivant, et que si r n'existe pas dans a il me met mes données à la première ligne vide du tableau.
j'ai mis l'excel mais pour soucis de confidentialité j'ai du retiré bcp de ligne et de donnée. mais le principe reste identique.
SVP aidez moi !
Sub MAJRECAP()
Workbooks("ANNUDEF.xlsm").Activate
'feuille a mettre à jour
FeuilR = Worksheets("Feuil1").Activate
'macro ouvrir ARAGO
'macro copier ARAGO
'macro coller ARAGO en feuille 2
'feuille des données exportées
FeuilD = Worksheets("Feuil2").Activate
'déclaration des varibles
Dim r As Long
Dim a As Long
Dim T As Long
' définition début de ligne pour chaque tableau
For a = 3 To LastRowD
For r = 2 To LastRowA
'recherche des données "nom" de la feuil2 dans la feuille 1
LastRowA = FeuilD.Cells.Find("*", ActiveSheet.Range("L1"), , , xlByRows, xlPrevious).Rows
LastRowD = FeuilR.Cells.Find("*", ActiveSheet.Range("E1"), , , xlByRows, xlPrevious).Rows
'si nom detail=nom decap alors
If FeuilD.Cells(r, 12) = FeuilR(a, 5) Then
'verif PNAI, si PNAI détail=PNAI recap, sinon mettre détail en récap et fond cellule en jaune
If FeuilD.Cells(r, 10) = FeuilR.Cells(a, 3) Then
Else
FeuilR.Cells(a, 3).Value = FeuilD.Cells(r, 10) And FeuilR.Cells(a, 3).Interior.Color = 6
End If
'verif Tel,sinon mettre détail en récap et fond cellule en jaune
If FeuilD.Cells(r, 7) = FeuilR.Cells(a, 1) Then
Else
FeuilR.Cells(a, 1).Value = FeuilD.Cells(r, 7) And FeuilR.Cells(a, 1).Interior.Color = 6
End If
'vérif mail,sinon mettre détail en récap et fond cellule en jaune
If FeuilD.Cells(r, 9) = FeuilR.Cells(a, 2) Then
Else
FeuilR.Cells(a, 2).Value = FeuilD.Cells(r, 9) And FeuilR.Cells(a, 2).Interior.Color = 6
End If
'vérif unité,sinon mettre détail en récap et fond cellule en jaune
If FeuilD.Cells(r, 11) = FeuilR.Cells(a, 4) Then
Else
FeuilR.Cells(a, 4).Value = FeuilD.Cells(r, 11) And FeuilR.Cells(a, 4).Interior.Color = 6
End If
'véri grade,sinon mettre détail en récap et fond cellule en jaune
If FeuilD.Cells(r, 14) = FeuilR.Cells(a, 6) Then
Else
FeuilR.Cells(a, 6).Value = FeuilD.Cells(a, 6).Interior.Color = 6
End If
Next a
End If
If FeuilD.Cells(r, 12) Is Nothing Then
'T definit la fin du tableau récap pour pouvoir rajouter juste en dessous
'si récap va contenir plus de 1000 ligne, merci de modifier le "L1000" par "L10000" sinon ça ne fonctionnera pas!
T = Range("L1000").End(xlUp) + 1
'sinon c'est que la personne nexiste pas en récap, mettre toutes les données à la fin du tableau récap en rouge
'nom
FeuilR.Cells(T, 5).Value = FeuilD.Cells(r, 12) And Interior.Color = 3
'PNAI
FeuilR.Cells(T, 3).Value = FeuilD.Cells(r, 10) And Interior.Color = 3
'Tel
FeuilR.Cells(T, 1).Value = FeuilD.Cells(r, 7) And Interior.Color = 3
'Mail
FeuilR.Cells(T, 2).Value = FeuilD.Cells(r, 9) And Interior.Color = 3
'Unité
FeuilR.Cells(T, 4).Value = FeuilD.Cells(r, 11) And Interior.Color = 3
'Grade
FeuilR.Cells(T, 6).Value = FeuilD.Cells(r, 14) And Interior.Color = 3
End If
Next r
'supprimer feuil2
'mettre la date de MAJ a coté du bouton ARAGO
'manque la donnée date ?
'FeuilR.Cells(1, 9).Value = Date
'ne fonctionne pas. demande d'objet
'FeuilR.Cells(1, 9).Select
End Sub
vraiment merci merci merci !