Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 remplissage automatique

  • Initiateur de la discussion Initiateur de la discussion kae
  • 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 !

kae

XLDnaute Nouveau
Bonsoir à tous,
stp je suis nouvelle apprenante et j'ai enormement besoin de votre aide...
J'ai mis un fichier en PJ et je souhaiterais que toutes les cellules de la feuille NON LIVRES puissent se remplir automatiquement en PRENANT EN COMPTE dans la feuille LIVRÉE les colis avec durée réception...
Aide moi stp, cela fais 1 semaine que je cherche une solution désespérément ...
 

Pièces jointes

Bonsoir goube,
Merci merci merci infiniment ... Svp pouvez vous m'expliquer ?
j'voue que je suis heureuse mais je veux comprendre comment faire pour être indépendante si vous voyez de quoi je parle !
 
Bonsoir kae, bienvenue sur XLD, bonsoir goube,

Voyez le fichier joint et cette macro dans la feuille NON LIVRES (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, n&, j%
tablo = Sheets("LIVRES").[A1].CurrentRegion.Resize(, 8)
ReDim resu(1 To UBound(tablo), 1 To 5)
For i = 2 To UBound(tablo)
    If IsNumeric(tablo(i, 8)) Then
        n = n + 1
        For j = 1 To 4: resu(n, j) = tablo(i, j): Next j
        resu(n, 5) = tablo(i, 8)
    End If
Next i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de destination
    If n Then
        .Resize(n, 5) = resu
        .Resize(n, 5).Borders.Weight = xlThin 'bordures
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 5).Delete xlUp 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche automatiquement quand on active la feuille.

Elle est très rapide car elle utilise des tableaux VBA.

A+
 

Pièces jointes

Re, bonsoir job75,

Se positionner sur une cellule du tableau de l'onglet LIVRES
Onglet Données, Récupérer et transformer des données, A partir d'un tableau ou d'une plage
Ouverture de la fenêtre Power Query
Sélectionner les colonnes à garder, clic droit Supprimer les autres colonnes
Filtrer la colonne Durée réception sur les valeurs autres que –
Clic en haut à gauche de chaque colonne pour définir le type ou sélectionner une ou plusieurs colonnes, Onglet Accueil, Transformer, Type de données, sélectionner le bon type
Onglet Accueil, Fermer, Fermer et charger, Fermer et charger.

Un peu de documentation :
http://www.excel-formations.fr/trucs-et-astuces.php

https://www.developpez.net/forums/b...ve-efficace-filtre-avance-dynamique-surcroit/

https://www.youtube.com/playlist?list=PLGvckt9NEpieN5i0xf9PEGcKyjBWNkSKL

Cordialement
 
Bonjour kae, goube,

Je constate que Power Query n'est pas très rapide.

Pour tester j'ai recopié le tableau source A2:H45 sur 44 000 lignes :

- actualisation des résultats sur Power Query, post #2 => 3 secondes

- macro du post #4 => 0,3 seconde.

A+
 
Je constate que Power Query n'est pas très rapide.
Il y a dû avoir un problème ponctuel sur ton système parce chez moi (et tu as un proc. sans doute un tout petit peu plus puissant que le mien), la mise à jour de la requête, pour environ 46 000 lignes, ne prend que 0,03s.

Avec ta macro, je trouve env 0,4 s.
 
Dernière édition:
Bonsoir mapomme,

Non j'ai testé plusieurs fois avec la macro :
VB:
Sub a()
t = Timer
ThisWorkbook.RefreshAll
MsgBox Timer - t
End Sub
Attention, il faut tester avec le tableau des résultats non mis à jour (19 lignes).

A+
 
Bonjour kae, goube, mapomme, le forum,

Une autre solution dans ce fichier (2) avec le filtre avancé :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A2:H" & Rows.Count).Clear 'RAZ
With Sheets("LIVRES")
    .[K2] = "=ISNUMBER(H2)" 'critère
    .[A1].CurrentRegion.AdvancedFilter xlFilterCopy, .[K1:K2], [A1:E1] 'filtre avancé copié
    .[K2] = ""
End With
End Sub
On notera que la MFC n'est pas copiée.

Sur 44 000 lignes la macro s'exécute chez moi en 0,25 seconde.

A+
 

Pièces jointes

Merci infiniment à TOUS ! c'est très cool de sentir entouré.. merci encore .. je me suis penché depuis dimanche sur des tutos de VBA pour mieux comprendre les lignes de codes... suis encore à la phase niveau "très nul" .. Tous les conseils pour m'orienter, accélérer et faciliter ma formation en excel VBA sont les biens venus..
Encore merci pour votre aide à tous !
 
Bonjour kae, le forum,

Pour faire bon poids voyez ce fichier (3) et la macro qui utilise le filtre automatique :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A2:H" & Rows.Count).Clear 'RAZ
With Sheets("LIVRES").[A1].CurrentRegion
    .AutoFilter 8, ">0" 'filtre automatique
    .Copy [A1]
    With [A1].CurrentRegion
        .Columns(8) = .Columns(8).Value 'supprime les formules
        .Columns(5).Resize(, 3).Delete xlToLeft
    End With
    .AutoFilter 'ôte le filtre
End With
End Sub
On notera que la MFC est copiée.

Chez moi sur 44 000 lignes :

- avec la MFC => 32 secondes

- sans la MFC => 0,5 seconde.

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
479
Réponses
5
Affichages
382
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…