Aide Macro Répéter cellule

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 !

jeuxtheme

XLDnaute Nouveau
Bonjour a tous 🙂

Petite nouvelle sur ce forum, je viens vous demander de l'aide pour créer une macro pour le boulot (si ce que je demande est possible bien sur)

J'ai un fichier excel présenté comme ca :


Article

date achat | n°document | montant unitaire | .....
date achat | n°document | montant unitaire | .....


Vous l'aurez compris, ce tableau me donne un recapitulatif de mes achats par article.

Cependant, lorsque je veux faire un tri par date par exemple, je ne peux pas voir de quel article parle les lignes qui s'affiche. Il faudrait donc que ca donne quelque chose comme ca:

Article | date achat | n°document | montant unitaire | .....
Article | date achat | n°document | montant unitaire | .....

A moins que vous ayé une autre solution ?

Merci de vos réponses, j'ai pas mal d'experience dans Excel mais je ne connais pas encore toutes ces ressources 🙂
 
Re : Aide Macro Répéter cellule

Re...


Un essai dans le classer joint. Le principe est le même que celui de l'essai précédent.
Une partie du code est dans le module de la feuille qui doit recevoir l'extraction (la feuille Feuil2 dans le classeur joint).
Une autre partie du code est dans un module standard, mais elle pourrait aussi bien être placée à la suite du code de feuille.
Le code est exécuté à chaque activation de la feuille Feuil2.
Le code ne modifie rien dans la feuille de données.


Compte tenu du fouillis de ce qui tient lieu de base de données, notamment l'absence de champ de clef et la colonne A où on trouve de tout (des titres généraux, des sous-titres, des dates, des identifiants de composant, des références à des sociétés, des commentaires, ... bref, de quoi faire virer l'auteur de ce foutoir dans n'importe quelle boîte tant soit peu sérieuse), il y a une restriction à l'emploi du code :
  • L'identifiant des composants (extrait en colonne A de la feuille Feuil2) doit toujours avoir la forme ID suivi par des chiffres (au moins 1) et rien d'autre.
    Les autres mentions figurant dans la colonne A de la feuille de données (feuille Feuil1, onglet Stocks Evolution des coûts) ne doivent pas avoir la forme des identifiants de composant.

Le code fonctionne avec les données du classeur d'exemple.
Voyez si ça fonctionne sur d'autres données.
S'il se peut que les identifiants de composant ne soient pas toujours de la forme ID suivi d'un ou plusieurs chiffres, on pourra encore (peut-être ?) s'en tirer avec une description précise des identifiants possibles.
Si les identifiants de composant sont de forme aléatoire, ça se compliquera sérieusement...

Tenez-nous au courant...


Bon courage.


ROGER2327
#5629


Samedi 21 Pédale 139 (Saint Inscrit, Converti - fête Suprême Quarte)
25 Ventôse An CCXX, 7,4820h - thon
2012-W11-4T17:57:25Z
 

Pièces jointes

Re : Aide Macro Répéter cellule

Bonsoir et merci beaucoup pour cette réponse rapide !
Je teste ça demain matin.
Les codes des articles ne commencent malheureusement pas par ID, ce sont des codes fictifs que j'ai fais pour les differencier car comme vous le dites, c'est un vrai foutoir.
Je comprends pas qu'un logiciel puisse créer un tel fichier.
Les vrais codes articles ne sont fais que de chiffres qui vont de 5 a une dizaine il me semble. je verifie ca demain .

Bonne soirée!
 
Re : Aide Macro Répéter cellule

Re...
(...)
Les codes des articles ne commencent malheureusement pas par ID, ce sont des codes fictifs que j'ai fais pour les differencier car comme vous le dites, c'est un vrai foutoir.
(...)
Les vrais codes articles ne sont fais que de chiffres qui vont de 5 a une dizaine il me semble.
(...)
Si on peut trouver une logique dans la désignation des articles, on arrivera peut-être à quelque chose. Une crainte tout de même : si des codes numériques peuvent s'interpréter comme des dates, on a un gros problème car il y a aussi des dates dans la colonne A ; mais avec un peu de chance, on trouvera peut-être une astuce si les formats des cellules sont différents pour les dates et les autres nombres...

À suivre...​


ROGER2327
#5630


Samedi 21 Pédale 139 (Saint Inscrit, Converti - fête Suprême Quarte)
25 Ventôse An CCXX, 9,5809h - thon
2012-W11-4T22:59:39Z
 
Re : Aide Macro Répéter cellule

Bonjour Roger.
Pour ce qui est des formats des colonnes je n'ai rien touché.
J'ai pris le fichier et j'ai juste remplacé le contenu.
Les dates sont donc en format date par défaut, et les codes en format standard.

Concernant les codes des articles les premiers ont bien 5 chiffres, les derniers en ont 13.

En tout cas je vous dis bravo pour votre travail 🙂
J'espere pouvoir faire cela moi-même un jour.

Bonne journée.
 
Re : Aide Macro Répéter cellule

Bonjour jeuxtheme


J'ai remplacé les identifiants par des codes numériques et j'obtiens la solution dans le classeur joint. Essayez-le et dites-moi s'il fonctionne correctement avec d'autres données. Si tel n'est pas le cas, donnez-moi des exemples de données qui ne sont pas correctement traitées. Merci.


Bonne journée.


ROGER2327
#5632


Dimanche 22 Pédale 139 (Saint Sengle, Déserteur - fête Suprême Seconde)
26 Ventôse An CCXX, 3,4539h - pissenlit
2012-W11-5T08:17:21Z
 

Pièces jointes

Re : Aide Macro Répéter cellule

Je n'ai qu'une chose à dire : c'est tout simplement génial.
Je viens d'entrer les codes sur mon fichier et toutes les données sont bien traitées.

J'ai une petite quesiton, lorsque je ferais la prochaine extraction de mon logiciel, la liste sera peut etre plus longue, devrais-je modifier quelque chose au code ? En lui disant de nettoyer sur une plage plus importante ?.

En tout cas je vous adresse un enorme merci pour ce travail.
 
Re : Aide Macro Répéter cellule

Re...


(...)
Je viens d'entrer les codes sur mon fichier et toutes les données sont bien traitées.
(...)
Tant mieux !

(...)
J'ai une petite quesiton, lorsque je ferais la prochaine extraction de mon logiciel, la liste sera peut etre plus longue, devrais-je modifier quelque chose au code ? En lui disant de nettoyer sur une plage plus importante ?.
(...)
Rien à changer si la liste s'allonge.
Tant que la structure des données et les noms des champs de données ("Composant", "Désignation", "Date compta", "Type écriture", etc.) ne sont pas modifiés, ce code devrait fonctionner.
En cas de problème, avisez-moi.

(...)
(...)
En tout cas je vous adresse un enorme merci pour ce travail.
Merci à vous, bonne continuation.​


ROGER2327
#5636


Dimanche 22 Pédale 139 (Saint Sengle, Déserteur - fête Suprême Seconde)
26 Ventôse An CCXX, 4,2317h - pissenlit
2012-W11-5T10:09:22Z
 
Re : Aide Macro Répéter cellule

Bonsoir,
une proposition moins poussée que celle de Roger2327 (un peu "brut de décoffrage"), mais qui semble donner des résultats similaires (testé vite fait sur le dernier fichier de Roger2327 mais à vérifier dans le détail) :
Code:
Sub Extraction()
Dim Pl As Range, i&, j&, TLigDat(), TLigId(), Tablo()
On Error GoTo err
With Sheets("Stocks  Evolution des coûts")
Set Pl = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
For i = 1 To Pl.Rows.Count
    If IsDate(.Cells(i, 1)) Then
        ReDim Preserve TLigDat(0 To j): TLigDat(j) = i: j = j + 1
    End If
Next i
j = 0
For i = 1 To Pl.Rows.Count
    If .Cells(i, 1) Like "###*" Then
        ReDim Preserve TLigId(LBound(TLigDat) To UBound(TLigDat) + 1): TLigId(j) = i: j = j + 1
    End If
Next i
ReDim Preserve TLigId(0 To j)
TLigId(UBound(TLigId)) = Pl.Rows.Count
j = 0
ReDim Preserve Tablo(LBound(TLigDat) To UBound(TLigDat), 1 To 8)
For i = LBound(TLigDat) To UBound(TLigDat)
While TLigDat(j) < TLigId(i + 1)
    Tablo(j, 1) = .Cells(TLigId(i), 1)
    Tablo(j, 2) = .Cells(TLigId(i), 3)
    Tablo(j, 3) = .Cells(TLigDat(j), 1)
    Tablo(j, 4) = .Cells(TLigDat(j), 3)
    Tablo(j, 5) = .Cells(TLigDat(j), 6)
    Tablo(j, 6) = .Cells(TLigDat(j), 8)
    Tablo(j, 7) = .Cells(TLigDat(j), 10)
    Tablo(j, 8) = .Cells(TLigDat(j), 12)
    j = j + 1
Wend
Next i
End With
copie:
With Sheets("Feuil2")
    .[A2].Resize([A2].CurrentRegion.Rows.Count - 1, [A2].CurrentRegion.Columns.Count).ClearContents
    .[A2].Resize(UBound(Tablo) + 1, UBound(Tablo, 2)) = Tablo
End With
Exit Sub
err: GoTo copie
End Sub
Code placé dans le module de Feuil2.
Le Like utilisé pour les identifiants est approximatif mais suffit en l'état (si ces derniers demandent plus de précision, il est possible d'utiliser un motif d'expression rationnelle).
A+
 

Pièces jointes

Dernière édition:
Re : Aide Macro Répéter cellule

Bonjour,
petite correction apportée au code proposé :
Code:
Sub Extraction()
Dim Pl As Range, i&, j&, TLigDat(), TLigId(), Tablo()
On Error GoTo err
With Sheets("Stocks  Evolution des coûts")
Set Pl = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
For i = 1 To Pl.Rows.Count
    If IsDate(.Cells(i, 1)) Then
        ReDim Preserve TLigDat(0 To j): TLigDat(j) = i: j = j + 1
    End If
Next i
j = 0
For i = 1 To Pl.Rows.Count
    If .Cells(i, 1) Like "###*" Then
        ReDim Preserve TLigId(LBound(TLigDat) To j + 1): TLigId(j) = i: j = j + 1
    End If
Next i
TLigId(UBound(TLigId)) = Pl.Rows.Count
j = 0
ReDim Preserve Tablo(LBound(TLigDat) To UBound(TLigDat), 1 To 8)
For i = LBound(TLigDat) To UBound(TLigDat)
While TLigDat(j) < TLigId(i + 1)
    Tablo(j, 1) = .Cells(TLigId(i), 1)
    Tablo(j, 2) = .Cells(TLigId(i), 3)
    Tablo(j, 3) = .Cells(TLigDat(j), 1)
    Tablo(j, 4) = .Cells(TLigDat(j), 3)
    Tablo(j, 5) = .Cells(TLigDat(j), 6)
    Tablo(j, 6) = .Cells(TLigDat(j), 8)
    Tablo(j, 7) = .Cells(TLigDat(j), 10)
    Tablo(j, 8) = .Cells(TLigDat(j), 12)
    j = j + 1
Wend
Next i
End With
copie:
With Sheets("Feuil2")
    .[A2].Resize([A2].CurrentRegion.Rows.Count - 1, [A2].CurrentRegion.Columns.Count).ClearContents
    .[A2].Resize(UBound(Tablo) + 1, UBound(Tablo, 2)) = Tablo
End With
Exit Sub
err: GoTo copie
End Sub
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
23
Affichages
2 K
Réponses
3
Affichages
741
Retour