Copier automatiquement des cellules excel dans d'autres feuilles excel.

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 !

DAVID-44-

XLDnaute Occasionnel
Bonjour, j'ai besoin d'aide, car mes connaissances en VBA sont nulles.😕
J'aimerais savoir s'il est possible de copier automatiquement des cellules d'une feuille excel dans d'autres feuilles excel.
J'ai une feuille principale "commande" sur laquelle je marque les besoins à l'aide d'une liste déroulante semi-automatique et d'une feuille "cadancier". Cela me permet de trouver les fournisseurs de chaque produit très rapidement.
Jusqu'ici, tout va bien.😀
Maintenant, j'aimerais pouvoir classer automatiquement dans des feuilles nommées par fournisseurs, les produits qui leur correspondent par jour et par ordre alphabétique.😳
Étant donné que je ne sais pas utiliser Visual Basic pour Application, je me retourne auprès de vos connaissances en espérant que vous pouvez m'aider.😉

Je vous remercie par avance.

Cordialement.

David.
 
Dernière édition:
Bonjour, voici un exemple de fichier.

Une feuille "commande" et des feuilles "Pierre", "Paul" etc... sur lesquelles j'aimerais retrouver automatiquement les lignes des cellules de la feuille "commande" par "Fournisseurs", "Produits", "Quantités" etc...
"Maintenant, j'aimerais pouvoir classer automatiquement dans des feuilles nommées par fournisseurs, les produits qui leur correspondent par jour et par ordre alphabétique.😳 "

Je vous remercie par avance.

Cordialement.

David.
 

Pièces jointes

Bon voyez le fichier joint et cette macro dans le ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim nom$, tablo, resu(), i&, dat$, n&
nom = UCase(Sh.Name)
With Sheets("COMMANDE")
    If nom = UCase(.Name) Then Exit Sub
    tablo = .UsedRange.Resize(, 5) 'matrice, plus rapide, sur 5 colonnes
End With
ReDim resu(1 To UBound(tablo), 1 To 4)
For i = 1 To UBound(tablo)
    If UCase(Trim(tablo(i, 1))) = "DATE" Then dat = tablo(i, 2)
    If UCase(Trim(tablo(i, 1))) = nom Then
        n = n + 1
        resu(n, 1) = tablo(i, 2) 'produits
        resu(n, 2) = dat
        resu(n, 3) = tablo(i, 4) 'quantités
        resu(n, 4) = tablo(i, 5) 'remarques
    End If
Next
'---restitution---
If Sh.FilterMode Then Sh.ShowAllData 'si la feuille est filtrée
With Sh.[A2] '1ère cellule de restitution, à adapter
    If n Then
        .Resize(n, 4) = resu
        .Resize(n, 4).Sort .Cells, xlAscending, Header:=xlNo 'tri alphabétique sur les produits
        .Resize(n, 4).Borders.Weight = xlThin 'bordures
    End If
    .Offset(n).Resize(Sh.Rows.Count - n - .Row + 1, 4).Delete xlUp 'RAZ en dessous
End With
Sh.Columns.AutoFit 'ajuste les largeurs
With Sh.UsedRange: End With 'actualise la barre de défilement verticale
End Sub
La macro se déclenche quand on active une feuille.
 

Pièces jointes

Bonjour DAVID-44-,

Voyez ce fichier (3) et la nouvelle macro :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim nom$, tablo, resu(), a, i&, dat$, n&
nom = UCase(Sh.Name)
With Sheets("COMMANDE")
    If nom = UCase(.Name) Then Exit Sub
    tablo = .UsedRange.Resize(, 5) 'matrice, plus rapide, sur 5 colonnes
End With
ReDim resu(1 To UBound(tablo), 1 To 5)
a = Array("LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI", "SAMEDI", "DIMANCHE") 'liste classée
For i = 1 To UBound(tablo)
    If UCase(Trim(tablo(i, 1))) = "DATE" Then dat = UCase(Trim(tablo(i, 2)))
    If UCase(Trim(tablo(i, 1))) = nom Then
        n = n + 1
        resu(n, 1) = Application.Match(dat, a, 0) 'nombre de 1 à 7
        resu(n, 2) = dat
        resu(n, 3) = tablo(i, 2) 'produits
        resu(n, 4) = tablo(i, 4) 'quantités
        resu(n, 5) = tablo(i, 5) 'remarques
    End If
Next
'---restitution---
If Sh.FilterMode Then Sh.ShowAllData 'si la feuille est filtrée
With Sh.[A2] '1ère cellule de restitution, à adapter
    If n Then
        Application.ScreenUpdating = False
        .EntireColumn.Insert 'insère une colonne A auxiliaire
        With .Cells(1, 0).Resize(n, 5)
            .Value = resu
            .Sort .Cells(1), xlAscending, , .Cells(1, 3), xlAscending, Header:=xlNo 'tri sur les dates/nombres puis sur les produits
            .Borders.Weight = xlThin 'bordures
            .Cells(1).EntireColumn.Delete 'supprime la colonne auxiliaire
        End With
    End If
    .Offset(n).Resize(Sh.Rows.Count - n - .Row + 1, 4).Delete xlUp 'RAZ en dessous
End With
Sh.Columns.AutoFit 'ajuste les largeurs
With Sh.UsedRange: End With 'actualise la barre de défilement verticale
End Sub
A+
 

Pièces jointes

Dernière édition:
- 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
6
Affichages
925
Retour