Microsoft 365 Complétion automatique d'une colonne

Semafor67

XLDnaute Nouveau
Hello,

J'espère que vous allez bien.

J'ai besoin de votre aide svp pour une tâche que je ne sais automatiser (voir exemple joint).

Comment puis-je compléter automatiquement la colonne "Nom" ? Dans mon exemple cela ne pose pas de problème mais le fichier que je dois traiter comporter des milliers d'entrées.

Un tout grand merci par avance.

Bien cordialement,

Marc
 

Pièces jointes

  • TEST.xlsx
    8.9 KB · Affichages: 10

brossadan

XLDnaute Nouveau
Bonjour,

nul doute que des experts auront d'autres solutions en VBA, mais sans y comprendre fifre, en passant par Power Query c'est assez simple à réaliser. (et si tu ne connais pas Query ce sera l'occasion de découvrir ce formidable outil).

1ere étape : Convertir ta plage en tableau

Tu sélectionnes de A1 à B10 puis la fonction "Mettre sous forme de tableau"
1713877164544.png
1713877192692.png


Tu choisis n'importe quel style et tu valides en cochant bien mon tableau comporte des en-têtes
1713877239445.png


2éme étape : Importer ce tableau dans power Query

Tu cliques sur une cellule du tableau pour le selectionner puis menu "Données" , A partir de Tableau ou d'une Plage :
1713877368378.png


La fenetre Power Query s'ouvre :
1713877404420.png


3ieme Etape : Remplir les vides

Tu cliques sur la colonne Nom puis dans le menu "transformer" Remplir vers le bas
1713877519809.png


Tu obtiens le résultat suivant :
1713877545918.png


Enfin tu peux éventuellement renommer la requête dans le champ Propriétés/Nom complétement à droite

Puis dans le menu Accueil, fermer et charger

Un nouvel onglet sera créé avec ton tableau rempli.
 

cp4

XLDnaute Barbatruc
Bonsoir @Semafor67 ,@brossadan ,

Un essai en VBA.
VB:
Option Explicit

Sub Completion()
   Dim rg As Range, i As Long

   With ThisWorkbook.Sheets("feuil1")
      Set rg = .Range("A1").CurrentRegion
      For i = 2 To rg.Rows.Count
         If .Cells(i, 1) = "" And .Cells(i, 2) <> "" Then .Cells(i, 1) = .Cells(i - 1, 1)
      Next i
   End With
End Sub
ou en utilisant un tableau plus adapter pour beaucoup de ligne (+rapide)
Code:
Sub Completion_Tb()
   Dim Tb, i As Long

   With ThisWorkbook.Sheets("feuil1")
      Tb = .Range("A1").CurrentRegion.Value
      For i = 2 To UBound(Tb)
         If Tb(i, 1) = "" And Tb(i, 2) <> "" Then Tb(i, 1) = Tb(i - 1, 1)
      Next i
   .Range("A14").Resize(UBound(Tb), UBound(Tb, 2)) = Tb 'cellule à adapter
End With
End Sub
 

Pièces jointes

  • Complétion automatique d'une colonne.xlsm
    15.6 KB · Affichages: 0
Dernière édition:

klin89

XLDnaute Accro
Bonsoir à tous, :)

Ou ceci :
VB:
Sub remplir()
   With Sheets("Feuil1").Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row)
        On Error Resume Next
        .SpecialCells(4).FormulaR1C1 = "=r[-1]c"
        On Error GoTo 0
        .Value = .Value
    End With
End Sub
klin89
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous :) ,

Un autre code VBA placé dans le module associé à la feuille concernée "Feuil1".
Pour exécuter le code , double-cliquez sur la cellule A1.

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim t, i&
  If Target.Address(0, 0) <> "A1" Then Exit Sub Else Cancel = True
  t = Intersect(Columns("a:b"), [a1].CurrentRegion)
  For i = 2 To UBound(t): t(i, 1) = IIf(t(i, 1) = "", t(i - 1, 1), t(i, 1)): Next
  [a1].Resize(UBound(t), 2) = t
End Sub
 

Pièces jointes

  • Semafor67- Complétion auto- v1.xlsm
    17 KB · Affichages: 2

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Je plussoie à la proposition de @brossadan
Il a fourni les photos ;)
Je fournis le code M
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Nom", type text}, {"Produit", type text}}),
    #"Rempli vers le bas" = Table.FillDown(#"Type modifié",{"Nom"})
in
    #"Rempli vers le bas"

@brossadan
C'est quoi ces points de couleur avec Valide Erreur Vide ?
Je n'ai pas cela dans mon PQ
 

brossadan

XLDnaute Nouveau
Bonsoir,
@Staple1600 ce sont des options d'affichage, plutôt pratiques pour repérer les erreurs ou les colonnes vides

1713910408316.png


Distribution des colonnes donnera un histogramme :
1713910475368.png


quand à profil de colonne affichera le détail en bas d'écran avec le nombre de valeurs, le nombre d'erreur, de vide, de valeurs distinctes, d'uniques, le min et max :

1713910553326.png


C'est parfois très pratique.

Bonne soirée
 

Semafor67

XLDnaute Nouveau
Bonjour,

nul doute que des experts auront d'autres solutions en VBA, mais sans y comprendre fifre, en passant par Power Query c'est assez simple à réaliser. (et si tu ne connais pas Query ce sera l'occasion de découvrir ce formidable outil).

1ere étape : Convertir ta plage en tableau

Tu sélectionnes de A1 à B10 puis la fonction "Mettre sous forme de tableau"
Regarde la pièce jointe 1195566Regarde la pièce jointe 1195567

Tu choisis n'importe quel style et tu valides en cochant bien mon tableau comporte des en-têtes
Regarde la pièce jointe 1195568

2éme étape : Importer ce tableau dans power Query

Tu cliques sur une cellule du tableau pour le selectionner puis menu "Données" , A partir de Tableau ou d'une Plage :
Regarde la pièce jointe 1195569

La fenetre Power Query s'ouvre :
Regarde la pièce jointe 1195571

3ieme Etape : Remplir les vides

Tu cliques sur la colonne Nom puis dans le menu "transformer" Remplir vers le bas
Regarde la pièce jointe 1195572

Tu obtiens le résultat suivant :
Regarde la pièce jointe 1195573

Enfin tu peux éventuellement renommer la requête dans le champ Propriétés/Nom complétement à droite

Puis dans le menu Accueil, fermer et charger

Un nouvel onglet sera créé avec ton tableau rempli.
Juste génial, un grand merci !
 

Discussions similaires

Réponses
5
Affichages
328

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki