XL 2019 remplissage automatisée de données

virginie83

XLDnaute Nouveau
Bonjour à tous je suis nouvelle sur le site et je tiens à préciser que je pars complètement de 0 concernant le VBA. Je sais que la question à déjà été posée et malgré mes recherches je n'arrive pas à adapter les codes donc voilà mes problématiques.

J'ai un fichier excel dans lequel je créé un code unique et pour lequel je saisie certaines données. J'injecte tous les jours une nouvelle feuille excel qui reprend ce même code mais sur laquelle il y a de nouvelles données pour lesquelles je voudrais automatiser la saisie.
Donc sur ma "feuille1" se trouve mon code + mes données saisies. Sur ma "feuille2" (que j'injecte tous les jours) se trouve également ce code unique mais avec d'autres informations que je voudrais rajouter sur "ma feuille1" - En sachant que j'ai plusieurs codes uniques à compléter tous les jours donc

Mon code unique se trouve colonne F sur la feuille 1 - mes nouvelles données se trouvent sur la feuille 2 avec mes codes uniques (colonne A) comme données communes : je voudrais remplir les colonnes A/B/K/L/S/T/AC de la feuille 1 avec les colonnes B/C/J/R/N/O/V de la feuille 2

PS: je n'arrive pas à mettre un exemple de mon fichier à priori trop volumineux

En espérant vraiment que vous pourrais aider une âme larguée en VBA

Merci à tous de vos retours
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Virginie, et bienvenue sur XLD.
Prenez votre fichier, ne garder que trois ou quatre feuilles, virez toutes les données à part une dizaine de lignes, (et supprimez les données sensibles ) et donnez nous ça, cela sera suffisant.
Sans fichier test, vous aurez que des réponses évasives car tout dépend de la structure de vos feuilles.

Concernant le VBA, rappelez vous que tout le monde a commencé un jour. :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec simplement :
VB:
Sub Transfert()
'Je voudrais remplir les colonnes A/B/K/L/S/T/AC de la feuille 1 avec les colonnes B/C/J/R/N/O/V de la feuille 2
Application.ScreenUpdating = False
DL1 = Sheets("Feuil1").Range("A65500").End(xlUp).Row    ' Nb ligne Feuil1
DL2 = Sheets("Feuil2").Range("A65500").End(xlUp).Row    ' Nb ligne Feuil2
Set F = Sheets("Feuil2")
With Sheets("Feuil1")
    For L = 2 To DL2                                    ' Pour toute ligne de feuil2
        DL1 = DL1 + 1                                   ' Incrément N° ligne de transfert
        .Cells(DL1, "A") = F.Cells(L, "B")              ' Transfert cellules
        .Cells(DL1, "B") = F.Cells(L, "C")
        .Cells(DL1, "K") = F.Cells(L, "J")
        .Cells(DL1, "L") = F.Cells(L, "R")
        .Cells(DL1, "S") = F.Cells(L, "N")
        .Cells(DL1, "T") = F.Cells(L, "O")
        .Cells(DL1, "AC") = F.Cells(L, "V")
    Next L
End With
End Sub
En espérant avoir tout compris.
 

Pièces jointes

  • Virginie.xlsm
    17.3 KB · Affichages: 22

virginie83

XLDnaute Nouveau
Finalement je n'ai pas pu attendre, ca répond parfaitement à mes attentes - Vraiment merci ca va me simplifier la vie. Du coup, sans vouloir exagérer si j'ai d'autres demandes dois-je ouvrir une nouvelle discussion ou puis-je rester sur celle ci?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Je pense après réflexion que la PJ ne correspond pas à vos besoins.
Si on appuie plusieurs fois sur le bouton on copie plusieurs fois les données, ce n'est paut être pas le but.
D'autre part si N° parc est unique et que suivant les jours les données changent sur ce N° de parc, il ne faut pas les copier mais remettre à jour les données en feuille 1 en fonction de la feuille2.
Je m'aperçois qu'en fait les specs d'entrée n'étaient pas si claires que ça. :)
Si pb alors faites signe.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Just for the fun,
Un V2 en PJ.
Les lignes de feuil2 dont le N° de parc n'existe pas en Feuil1 sont recopiées à la suite.
Les lignes de feuil2 dont le N° de parc existe en Feuil1 sont mises à jour.
Je pense que ça colle plus à ce que vous attendez. Avec :
VB:
Sub Transfert()
'Je voudrais remplir les colonnes A/B/K/L/S/T/AC de la feuille 1 avec les colonnes B/C/J/R/N/O/V de la feuille 2
Application.ScreenUpdating = False
DL1 = Sheets("Feuil1").Range("A65500").End(xlUp).Row    ' Nb ligne Feuil1
DL2 = Sheets("Feuil2").Range("A65500").End(xlUp).Row    ' Nb ligne Feuil2
Set F = Sheets("Feuil2")
With Sheets("Feuil1")
    For L = 2 To DL2                                    ' Pour toute ligne de feuil2
        If Application.CountIf(.Range("B:B"), F.Cells(L, "C")) = 0 Then ' Le N° de parc n'existe pas
            DL1 = DL1 + 1                                               ' Incrément N° ligne de transfert
            Copie DL1, L
        Else
            Lx = Application.Match(F.Cells(L, "C"), .Range("B:B"), 0)   ' Ligne où se trouve N° parc.
            Copie Lx, L
        End If
    Next L
End With
End Sub
Sub Copie(Li1, Li2) ' Transfert cellules
    Set F = Sheets("Feuil2")
    With Sheets("Feuil1")
        .Cells(Li1, "A") = F.Cells(Li2, "B")
        .Cells(Li1, "B") = F.Cells(Li2, "C")
        .Cells(Li1, "K") = F.Cells(Li2, "J")
        .Cells(Li1, "L") = F.Cells(Li2, "R")
        .Cells(Li1, "S") = F.Cells(Li2, "N")
        .Cells(Li1, "T") = F.Cells(Li2, "O")
        .Cells(Li1, "AC") = F.Cells(Li2, "V")
    End With
End Sub
 

Pièces jointes

  • Virginie (2).xlsm
    18.1 KB · Affichages: 13
Dernière édition:

virginie83

XLDnaute Nouveau
Bonjour,

Alors j'ai essayé le code, ça me colle bien les données dans les cellules demandées en revanche ça me copie la 1ère ligne, et il me faudrait une recherchev des données qui sont dans la colonne F de la feuille 1 et qui va prendre les cellules de cette valeur de la feuille 2, est ce que ca vous serait possible?
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 400
Membres
102 883
dernier inscrit
jameseyz