Remplissage automatique lignes entre 2 celulles
Bonjour à tous,
J'ai du mal à mettre en œuvre mon besoin, qui de prime abord me semble assez simple.
Je souhaite que lorsque qu'une personne a saisi 2 valeurs identiques sur 2 lignes d'une colonne, que toutes les cellules entre ces 2 lignes soient identiques.
Voici visuellement ce que je voudrais obtenir, je souhaite que ma macro effectue cette opération uniquement sur les colonnes A / C et D uniquement.
En espérant que ma demande est claire.
En vous remerciant par avance.
En fait le fichier ne comprendra que le tableau des colonnes A à D.
C'est un tableau de suivi de traçabilité pour des opérateurs, le but étant qu'ils ne remplissent que les données tel que défini sur le tableau coté gauche.
Et qu'ensuite, en cliquant sur un bouton macro les lignes vides entre 2 cellules remplies soient complétées.
Donc pour la :
- colonne A cela complète les lignes entre 3 et 12.
- colonne C cela complète les lignes entre 3 et 7.
- colonne D cela complète les lignes entre 3 et 9.
- mais surtout celles en dessous doivent rester vides
Je précise ma demande.
Ce tableau est une feuille version papier remplie par des opérateurs, qui indiquent le n° de lot de peinture et vernis pour chacune des pièces qu'ils produisent.
Afin de ne pas perdre un temps infini a réécrire les mêmes choses lignes à après lignes, ils indiquent uniquement le changement de lot vernis ou peinture à sur la ligne de la pièce sur laquelle ils ont commencé à utiliser ce numéro de lot.
Ces fiches sont ensuite scannées, je vous laisse imaginer la complexité pour retrouver des pièces concernées par un lot de produit qui s'avérerait défectueux quelques semaines après la production.
Je souhaite donc informatiser tout cela, afin de permettre un meilleur suivi et une meilleure recherche ultérieure.
Dans l'exemple ci-dessous l'opérateur a produit durant sa journée les pièces A120001 à A120012 (dates entrées à gauche des numéros de pièces).
Il a utilisé un lot peinture P0001A de la pièce A12001 à la pièces A12007. Ensuite le lot peinture P2B de la pièce A120008 à A120012.
Il a utilisé le lot vernis V0001A de la pièce A120001 à A120009. Puis le lot V3X pour les pièces A120010 à A120012.
Je souhaite que ma macro :
- Duplique la date en colonne A entre les 2 cellules pleine (A2 et A13 dans cet exemple), la date sera la même car imposée par une liste unique avec =AUJOURDHUI().
- Duplique en colonne C la valeur du dessus lorsqu'une cellule est vide et qu'une date est présente en colonne A.
- Duplique en colonne D la valeur du dessus lorsqu'une cellule est vide et qu'une date est présente en colonne A.
Le résultat attendu sera celui-ci:
Ce tableau est vraiment destiné à des personnes ne maitrisant pas l'informatique, et qui seront formées à remplir les cellules, rien de plus.
Je vous remercie par avance pour votre aide.
Bon j'ai réussi un bonne partie du code, mais il me manque la fin.
Sub CompleterDates()
Dim x As Integer
Dim LigneHautDate As Integer
Dim CopieValeurDate As Integer
Dim LigneBasDate As Integer
Dim Val1Piece1 As Long
Dim Val2Piece1 As Long
Dim NoColDate As Integer
Dim NoColPeinture As Integer
Dim NoColVernis As Integer
' /!\ Début paramétrage si ajout lignes/Colonnes = Déclarer à quelle ligne démarre le tableau (les en-têtes de colonnes) /!\
' Donner la valeur de x qui correspond au numéro de ligne ou sont les en-têtes des colonnes
x = 4
' Vérifier nom entre "" qui doit être identique à celui de la valeur de cellule de l'en-tête
' Donner la valeur de x dans Range("x:x")
NoColDate = Application.Match("Date", Range("4:4"), 0)
NoColPeinture = Application.Match("LotPeinture", Range("4:4"), 0)
NoColVernis = Application.Match("LotVernis", Range("4:4"), 0)
' /!\ Fin paramétrage si ajout lignes/Colonnes
LigneBasDate = Cells(Rows.Count, NoColDate).End(xlUp).Row - 1
LigneHautDate = Cells(x, NoColDate).End(xlDown).Row + 1
CopieValeurDate = Cells(Rows.Count, 1).End(xlUp).Row
'N'est plus utilisé
'LigneBasDate = Cells(Rows.Count, 1).End(xlUp).Row - 1
'LigneHautDate = Range("A1").End(xlDown).Row + 1
'CopieValeurDate = Cells(Rows.Count, 1).End(xlUp).Row
' Macro pour copier la dernière date entre les 2 lignes comprenant une date
If LigneBasDate + 1 <> LigneHautDate - 1 Then
Cells(CopieValeurDate, 1).Select
Selection.Copy
Range(Cells(LigneHautDate, 1), Cells(LigneBasDate, 1)).Select
ActiveSheet.Paste
End If
' Macro pour copier la dernière traçabilité à partir de la dernière cellule avec date jusqu'à la valeur trouvée
Val1Piece1 = Cells(Rows.Count, NoColPeinture).End(xlUp).Row
Range(Cells(Val1Piece1, NoColPeinture), Cells(LigneBasDate + 1, NoColPeinture)).FillDown
' Recherche si 2ème valeur est présente dans la journée de travail
'Val2Piece1 = Cells(Rows.Count, NoColPeinture).Val1Piece1(xlUp).Row
'Range(Cells(
End SubJe souhaiterai trouver le code pour trouver le N° de ligne de début et de fin d'une plage de cellules vides au-dessus de la dernière cellule pleine en remontant par la fin.
Par exemple, dans le cas ci-dessous pour la colonne C trouver les lignes 6 et 7


