remplir automatiquement des lignes à partir des info connues de cellule du dessus

  • Initiateur de la discussion Initiateur de la discussion luno123
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

luno123

XLDnaute Occasionnel
Bonjour,

J'effectue une extraction de données. Il se trouve que le logiciel ne me donne le nom et le code du fournisseur qu'une fois (partie orange).
Je voudrais trouver un moyen de remplir automatiquement les parties grises à partir des données connues de la cellule du dessus (orange). Ce qui me permettrait d'avoir le nom et le code du fournisseur en face de chaque facture.

Merci d'avance

PS/ le nom des fournisseurs et les montants sont fictifs.
 

Pièces jointes

Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Bonjour Luno, bonjour le forum,

Par formule je sais pas faire... Je te propose ma macro ci-dessous :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)


With Sheets("What") 'prend en compte l'onglet "What"
    Set pl = .Range("D2:D" & .Cells(Application.Rows.Count, 4).End(xlUp).Row) 'définit la plage pl
End With 'fin de la prise en comte de l'onglet "What"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    If cel.Interior.ColorIndex = 15 Then 'condition : si la couleur de la celluleest "Gris - 25%"
        cel.Value = cel.Offset(-1, 0).Value 'récupère la valeur de la cellule du dessus
        cel.Offset(0, 1).Value = cel.Offset(-1, 1).Value 'ala cellule à coté récupère la valeur de la cellule du dessus à coté
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
Le fichier :
 

Pièces jointes

Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Bonjour luno123, salut Robert 🙂

Attention : la plupart des cellules grises contiennent le texte vide "".

Alors utilisons le filtre automatique :

Code:
Sub Remplissage()
  Dim derlig As Long
  derlig = [B65536].End(xlUp).Row
  If derlig = 1 Then Exit Sub
  Application.ScreenUpdating = False
  On Error Resume Next
  With [D1:E1].Resize(derlig)
    .AutoFilter 1, "=" 'filtre les cellules ne contenant "rien"
    With [D2:E2].Resize(derlig - 1).SpecialCells(xlCellTypeVisible)
      .FormulaR1C1 = "=R[-1]C"
      .Parent.AutoFilterMode = False 'désactive le filtre
    End With
    .Value = .Value 'supprime les formules
  End With
End Sub
Fichier joint, Alt+F11 pour voir le code.

A+
 

Pièces jointes

Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Bonjour Robert, Bonjour job75,

Pour Job75,

Ta macro déconne quand je change la ligne orange. T u as essayé de mettre autre chose à la place en modifiant par exemple le nom du fournisseur?


Pour Robert,
Le souci avec ta macro(c'est un peu de ma faute) c'est la gestion des couleurs. En réalité, quand je fais mon extraction il n'y a pas de couleur grise ou orange. Je les ai rajoutées pour que mon exemple soit plus parlant. Il y a les lignes bien remplies (que j'ai identifiées en orange) et les lignes vides.
Je ne sais pas si j'ai été assez clair mes amis.

Merci encore pour votre réactivité.

Luno
 
Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

à job75

Voici le fichier qui "déconne". Tu regardes et tu me dis. Essaye par exemple de changer les données en mettant des nouvelles pas forcément sur les anciennes lignes renseignées. De plus il ne prend pas en compte le fournisseur "Villepin"
Sinon serait-il possible de désactiver les filtre quand je le souhaite?

Merci d'avance
 

Pièces jointes

Dernière édition:
Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Re,

Toujours pas compris, car les cellules vides se remplissent, voir fichier joint...

Nota : D28 et E28 se remplissent car B28 contient le texte vide "".

A+
 

Pièces jointes

Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Autant pour moi j'ai bien vu mon "incohérence". Effectivement quand il n'y a pas de numéro de facture, la macro ne répond pas: normal!!!
Par contre j'ai un souci avec ce filtre quui s'active dèsque je change mes données.

Help please

thanks
 
Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Re,

Il y avait en effet une erreur : le filtre ne se désactivait pas s'il n'y avait plus rien à filtrer.

La bonne macro :

Code:
Sub Remplissage()
  Dim derlig As Long
  derlig = [B65536].End(xlUp).Row
  If derlig = 1 Then Exit Sub
  Application.ScreenUpdating = False
  On Error Resume Next
  With [D1:E1].Resize(derlig)
    .AutoFilter 1, "=" 'filtre les cellules ne contenant "rien"
    [D2:E2].Resize(derlig).SpecialCells(xlCellTypeVisible) _
      .FormulaR1C1 = "=R[-1]C"
    .Parent.AutoFilterMode = False 'désactive le filtre
    .Value = .Value 'supprime les formules
  End With
End Sub
Nota : je remplis maintenant une ligne de plus (sous le tableau) avec [D2:E2].Resize(derlig)

Fichier (2).

A+
 

Pièces jointes

Re : remplir automatiquement des lignes à partir des info connues de cellule du dessu

Bonjour luno123, le forum,

J'ai pu constater, sur de très grands tableaux, que la méthode qui consiste à entrer des formules puis à ne conserver que les valeurs est beaucoup trop lente.

Une méthode très rapide est d'utiliser un tableau VBA, ici la variable tablo :

Code:
Sub Remplissage()
Dim derlig As Long, tablo, i As Long
derlig = [B65536].End(xlUp).Row
If derlig = 1 Then Exit Sub
tablo = [D2:E2].Resize(derlig) 'matrice, plus rapide
For i = 2 To derlig
  If Trim(tablo(i, 1)) = "" Then
    tablo(i, 1) = tablo(i - 1, 1)
    tablo(i, 2) = tablo(i - 1, 2)
  End If
Next
[D2:E2].Resize(derlig) = tablo
End Sub
Fichier (3).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
879
C
Réponses
4
Affichages
669
Cortomaltese
C
Retour