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.

image
12exemple.xlsm (10.82 Ko)

Hello,

Deux propositions, l'une par PowerQuery, l'autre par raccourci clavier =D

Méthode 1 : tu fais clic droit actualiser sur le tableau gris

16exemple-1.xlsm (19.61 Ko)

Méthode 2 :

image image

Et ensuite tu fais = Ta cellule du dessus puis tu fais CTRL+Entrée

image

@+

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.

image

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:

image

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.

7exemple.xlsm (11.04 Ko)

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 Sub

Je 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

image
5exemple.xlsm (22.74 Ko)
Rechercher des sujets similaires à "remplissage automatique lignes entre celulles"