Compléter automatiquement des cellules

Bonjour,

Je cherche à résoudre le problème suivant :

Dans un tableau j'ai des lignes correspondant à des entreprises.

Pour toutes les lignes j'ai le numéro de SIRET, par contre l'effectif figure sur certaines lignes et pas sur d'autres.

Je souhaiterais obtenir, lorsque la cellule "effectif" est vide, que son contenu soit remplacé par le contenu (non vide) figurant sur une autre ligne de la même entreprise (identifiée par le SIRET). Précision : plusieurs lignes d'une entreprise peuvent contenir une cellule "effectif" vide.

Cela est-il faisable ?

Le fichier d'exemple est joint, et l'effectif est en colonne AC et le SIRET en colonne AD

Merci d'avance pour vos réponses

Arnaud

23exemple.zip (7.13 Ko)

Bonjour. Bienvenue sur le Forum

Cela est-il faisable ?

Bien connue sur le Forum, citation de Myta, je crois, "Excel fait tout, sauf le café!"

Mais comme pour le café, il faut fournir les éléments.

Ici, un fichier avec l'exemple serait bienvenu.

Cordialement

J'ai ajouté le fichier d'exemple au message intial.

Arnaud

Bonjour

Code dans Module avec Bouton associé

Sub Traiter()
Application.ScreenUpdating = False
'Définition des plages à traiter et insertion d'une colonne temporaire
    Columns("AE:AE").Select
    Selection.Insert Shift:=xlToRight
    Range("AD1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Name = "ColAD"
    Selection.Offset(, -1).Select
    Selection.Name = "ColAC"
    Selection.Offset(, 2).Select
    Selection.Name = "ColAE"
    Range(Selection, Selection.Offset(0, -1)).Select
    Selection.Name = "Base"
    'Formule dans la colonne temporaire
    Range("AE1").Select
    Selection.FormulaArray = _
        "=INDEX(ColAC,MAX(IF((ColAD=RC[-1])*(ColAC<>""""),ROW(ColAD))))"
    Selection.AutoFill Destination:=Range("ColAE")
    Selection.Offset(, -1).Select
'Traitement
Dim MaCellule As Object, i As String
For Each MaCellule In Range("ColAD")
i = WorksheetFunction.VLookup(MaCellule.Value, Sheets("Feuil1").Range("Base"), 2, False)
MaCellule.Offset(, -1) = i
Next MaCellule
'Suppression de la colonne temporaire
Columns("AE:AE").Select
    Selection.Delete Shift:=xlToLeft
    Range("AD1").Select
End Sub

Cordialement

15exemple-retour.zip (15.79 Ko)

Merci beaucoup pour cette macro.

Je vais tâcher de l'affiner car lorsqu'il y a plus de 2 lignes (exemple des lignes 11, 12 et 13)de la même entreprise et que l'effectif est non vide dans une autre ligne mais vide dans la première, la macro met à vide la cellule effectif qui était renseignée.

C'est assez complexe car si effectif est non vide je dois le garder, et s'il est vide je dois vérifier sur les 3 lignes suivantes si elles correspondent au même SIRET et si l'effectif n'est pas vide, et si c'est le cas récupérer le chiffre de l'effectif

Je ne suis pas convaincu d'être très clair...

Arnaud

Rechercher des sujets similaires à "completer automatiquement"