À l'heure actuelle, j'ai un classeur maître Excel que les employés utilisent pour la saisie de données. Chacun d'entre eux télécharge une copie sur leur bureau et marque ensuite leur progression sur diverses entrées en saisissant un "x" dans une ligne à côté des données qu'ils ont terminées. Chaque produit a sa propre ligne avec ses données respectives répertoriées sur cette ligne. Le classeur principal est rempli tout au long du trimestre avec de nouvelles données pour les produits dès qu'elles sont disponibles, qui sont actuellement mises à jour sur chaque classeur individuel en utilisant une macro qui copie simplement la plage où se trouvent les données (voir le code ci-dessous).Insérer des lignes VBA
Sub GetDataFromClosedWorkbook()
'Created by XXXX 5/2/2014
Application.ScreenUpdating = False ' turn off the screen updating
Dim wb As Workbook
Set wb = Workbooks.Open("LOCATION OF FILE", True, True)
' open the source workbook, read only
With ThisWorkbook.Worksheets("1")
' read data from the source workbook: (Left of (=) is paste @ destination, right of it is copy)
.Range("F8:K25").Value = wb.Worksheets("1").Range("F8:K25").Value
End With
With ThisWorkbook.Worksheets("2")
' read data from the source workbook: (Left of (=) is paste @ destination, right of it is copy)
.Range("V5:Z359").Value = wb.Worksheets("2").Range("V5:Z359").Value
End With
wb.Close False ' close the source workbook without saving any changes
Set wb = Nothing ' free memory
Application.ScreenUpdating = True ' turn on the screen updating
End Sub
Le problème que je vais avoir est la suivante: chaque fois un certain temps, je vais avoir besoin d'ajouter un nouveau produit, qui ajoute une ligne sur le maître (ce qui est opposé à l'ajout de données, ce qui est juste ajouté à travers la rangée). Parfois, cette rangée est à la fin, parfois c'est au milieu. Comme vous pouvez le voir dans le code ci-dessous, mon VBA ne peut actuellement pas gérer ce changement de ligne car il s'agit simplement de copier/coller à partir d'une plage prédéfinie. Le classeur de chaque utilisateur ne détecte pas ce changement dans la ligne # et les données dans les colonnes sont donc associées aux mauvaises lignes. Normalement, vous pouvez simplement copier la feuille entière et le problème résolu. Le problème que j'ai, c'est que chaque utilisateur doit être en mesure d'enregistrer leur propre processus dans leur propre classeur à côté de leurs données. Existe-t-il un moyen de coder ceci afin qu'une nouvelle ligne sur la feuille principale soit prise en compte et ajoutée à toutes les autres sans effacer/déplacer les marques faites par chaque utilisateur? J'ai essayé de trouver un moyen de "insérer" des lignes si elles sont nouvelles dans le maître, car cela permettrait de préserver les données, mais ne peut pas le comprendre. En outre, en raison de la sécurité sur le serveur au work-linking classeurs, etc n'est pas une option. Quelqu'un at-il des idées à ce sujet?
Chaque produit a-t-il un nom unique ou un autre identifiant unique? –
Oui, ils le font. Les 7 premières colonnes sont toutes uniques au produit et peuvent être chacune un identifiant. – Brumder
Lorsque vous mettez à jour le classeur principal, ajoutez-vous uniquement de nouveaux produits ou mettez-vous à jour une ligne existante? –