Macro qui intègre des libellés de cellules après chaque tableau

zakintos84

XLDnaute Nouveau
Bonsoir à tous,

Voilà mon problème (n'étant pas un pro des macros un peu complexe...:D)
J'ai une extraction d'un logiciel qui me donne des dizaines de tableaux à la suite des uns des autres et contenant les mêmes noms de cellules par exemple achats, ventes etc... en première colonne.
L'extraction comporte plusieurs milliers de lignes qui suivent une logique d'analyse.
Les lignes étant les unes à la suite des autres, je peux reconnaître un nouveau tableau que par le fait qu'une cellule contient un "point" marquant ainsi un nouveau tableau.
Le problème c'est que lors du transfert sur Excel je n'ai plus la référence du tableau qui est remplacé par un point (par exemple ABCD 1 - ABCD 1.1 - ABCD 1.3 - ABCD 2 etc...) et du coup je ne peux pas travailler à partir de cette extraction pour faire des recherches valeurs car EXCEL ne sait pas identifier quelle valeur il doit trouver car tous les tableaux contiennent le même contenu approximativement.
Donc, j'ai besoin d'une macro qui me permette d'insérer des noms de cellules prédéfinies et suivant la même logique sur la première colonne en face de chaque tableau et de répéter cette référence de cellule jusqu'au prochain tableau marqué par un point mais qui est à remplacer par une référence prédéfinie...et ainsi de suite...
J'ai navigué sur beaucoup de forums mais je n'ai pas trouvé de solution à mon problème.
Merci d'avance à tous ceux qui pourront m'aider...
 

zakintos84

XLDnaute Nouveau
Re : Macro qui intègre des libellés de cellules après chaque tableau

Bonjour,

Ci-joint l'exemple :
- Onglet 1 = extraction excel obtenue
- Onglet 2 = solution souhaitée
Le fichier exemple ne contient que 227 lignes mais la véritable extraction en contient plus de 25 000...
Merci d'avance à tous ceux qui pourront m'aider.:eek:
 

Pièces jointes

  • Ex zakintos84.xls
    45 KB · Affichages: 63

Zon

XLDnaute Impliqué
Re : Macro qui intègre des libellés de cellules après chaque tableau

Salut,

j'essaie de voir les séparateurs qui nous permettraient de remplir la 1 ère colonne :

RES. MENSUEL GESTION permet de différencier les regions ?

REEL pour les quantités d'une region à l'autre ?

QTE REELLE si différents sous totaux dans une region ?

Me trompe-je ?

C'est faisable mais je ne vois pas comment je peux nommer REGION ou F1 à moins que ce soit
fixe au niveau de l'enchainement des tableaux ?
"suivant la même logique sur la première colonne en face de chaque tableau et de répéter cette référence de cellule jusqu'au prochain tableau marqué par un point mais qui est à remplacer par une référence prédéfinie...et ainsi de suite..."=>arf j'ai la réponse

par contre pour Qte1 j'ai QTE REELLE pour délimiter .

Est-ce que dans ton fichier tu as d'autres feuilles ou c'est juste un nouveau fichier à chaque fois avec l'extraction puis le résultat attendu ?


ton niveau en VBA ? sais-tu modifier une constante par exemple ?

fais-tu du bon café ?=>LOL je m'en fous de celle-là....

A+++
 

zakintos84

XLDnaute Nouveau
Re : Macro qui intègre des libellés de cellules après chaque tableau

Bonjour Zon,
En réponse à tes questions :
-pour marquer la fin des tableaux, ce n'est pas forcément les libellés que tu as indiqué dans ta réponse (rés. mensuel gestion etc...), le seul séparateur de tableaux reste le point (.).
-il y a effectivement une codification analytique des zones qui reste inchangée.
-c'est une extraction mensuelle sur un seul onglet donc pas d'autres feuilles...
-mon niveau VBA est = à 0 puisque je me sers de ce que je trouve sur les forums... ;-))

et oui, je fais du bon café grâce à ma Nespresso recommandée par Georges CLOONEY !!!

Merci pour ton aide.
@+++
 

Brigitte

XLDnaute Barbatruc
Re : Macro qui intègre des libellés de cellules après chaque tableau

Bonjour,

Moi je passe par là pour faire la bise à Zon, trop rare. J'espère que tu vas bien Fabrice.

fais-tu du bon café ?=>LOL je m'en fous de celle-là....

Mon oeil que tu t'en fous... pour t'aider à passer les nuits sur excel, pas si mal, non ?

A bientôt.
 

Zon

XLDnaute Impliqué
Re : Macro qui intègre des libellés de cellules après chaque tableau

Salut,

tu trouveras en PJ ce que j'ai compris de ta demande,

ne pas hésiter à poser des questions c'est le but du forum


Code:
Const ChaineCherche$ = "."
Const NomF$ = "EXTRACTION DE BASE" ' à adapter

Sub Princ()
 Dim Plage As Range, F As Worksheet
 Dim T
 Dim I&, Ligne&
 Dim C As Range
  
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual 'si qques formules
  
  Set F = Sheets(NomF)
  T = Array("R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8") ' à adapter on peut aussi recuperer un plage de cellule
  
  With F
    .Columns(1).Insert 'on insere 1 colonne
    Set Plage = .[A1].CurrentRegion ' à adapter
  End With
  
  Filtre F, Plage.Cells(1, 2), ChaineCherche 'on filtre sur la 2émé colonne
   
  With Plage
    For Each C In .Columns(1).SpecialCells(xlCellTypeVisible)
      Ligne = EnleverCar(C.Address) 'on recupere le numero de ligne
      If Ligne > 1 Then
        Set Plage = .Resize(Ligne, 3) 'on travaille sur 3 colonnes
     On Error Resume Next
        F.AutoFilterMode = False 'on ote l'autofiltre afin de remplir les cellules de la 1ere colonne
        Range(.Cells(Ligne, 1), .Cells(Ligne, 1).End(xlUp)(2)) = T(I)
     If Err <> 0 Then MsgBox "le tableau ne contient pas assez d'éléments": Exit For
        I = I + 1
'Cas des dernieres cellules où le point n'apparait pas, à effacer si le . apparait
        If I = UBound(T) Then Range(.Cells(Ligne + 1, 1), .Cells(.Cells(Ligne, 2).End(xlDown).Row, 1)) = T(I)
      End If
    Next C
  End With
  Application.Calculation = xlCalculationAutomatic
End Sub

Sub Filtre(F As Worksheet, C As Range, Critere)
  With F
    On Error Resume Next
      .AutoFilterMode = Not .AutoFilterMode
    On Error GoTo 0
    C.AutoFilter 1, Critere
  End With
End Sub

Function EnleverCar(C$, Optional I&) 'Zon, on garde que les chifrss
  For I = 1 To Len(C)
    EnleverCar = EnleverCar & IIf(Asc(Mid(C, I, 1)) < 44 Or Asc(Mid(C, I, 1)) > 58, "", Mid(C, I, 1))
  Next I
End Function


A+++

Ps pour Brigitte :)

je te renvoie la bise, aprés une longue absence du forum (3 ou 4 ans) en effet ça fait plaisir de contribuer à nouveau car l'envie est revenue...
 

Pièces jointes

  • Ex zakintos84.zip
    23.2 KB · Affichages: 37

Brigitte

XLDnaute Barbatruc
Re : Macro qui intègre des libellés de cellules après chaque tableau

Re,

Une fois n'est pas coutume, je me réincruste, l'occasion étant importante... Merci pour la bise, Fabrice, j'espère que tu auras envie longtemps, longtemps, longtemps... surtout en ce moment, où on a perdu un être qu'on aimait, c'est bien de se resserrer dans les liens d'avant... c'est important d'être tous là.
 

Staple1600

XLDnaute Barbatruc
Re : Macro qui intègre des libellés de cellules après chaque tableau

Bonjour à tous

ne pas hésiter à poser des questions c'est le but du forum


Zon:
Voici une question
Pourquoi tu n'utilise pas simplement ceci ?
Ligne = C.Row
en lieu et place de
Ligne = EnleverCar(C.Address)

PS: j'aime bien ta fonction Filtre
Je m'en reservirai à l'occasion


Bon dimanche à tous
 

Zon

XLDnaute Impliqué
Re : Macro qui intègre des libellés de cellules après chaque tableau

Salut,

Tu as raison staple1600 et merci de le souligner, j'étais parti sur une autre idée que j'en avais oublié un basique, d'ailleurs en retestant quelque chose tournait pas rond, j'ai aussi enlevé la gestion d'erreur , pas vraiment utile ici...


Zakintos84 il est important de construire la tableau T avec ta liste de compte.


A+++


Ps en effet Brigitte....
 

Pièces jointes

  • Ex zakintos84V2.zip
    23.8 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : Macro qui intègre des libellés de cellules après chaque tableau

Re

De rien Monsieur Zon

je te renvoie la bise, aprés une longue absence du forum (3 ou 4 ans) en effet ça fait plaisir de contribuer à nouveau car l'envie est revenue...
Moi c'est le contraire
L'envie s'étiole peu à peu

Espérons que ton retour fera revenir d'autres membres émérites des temps jadis ;)

Zakintos84
Que penses-tu du bel ouvrage de Zon ?
Cela solutionne-t-il ta question ?
 
Dernière édition:

zakintos84

XLDnaute Nouveau
Re : Macro qui intègre des libellés de cellules après chaque tableau

Bonjour à tous,

Je suis heureux que ce forum ait été l'occasion de discuter entre amis.:D
Pour ta macro ZON, dès que je la lance j'ai un message d'erreur qui s'affiche (erreur de compilation : End sub attendu) et comme je n'y connais rien dans ce langage...:eek:
Je pense que le message d'erreur me dit qu'il attend que la macro soit terminée mais c'est étonnant puisque c'est au début du fichier.
En tout cas, je ne sais pas combien de temps tu as passé sur cette question mais je dois reconnaître que c'est vraiment une passion voire un sacerdoce pour répondre à toutes ces questions et je vous présente ma plus grande gratitude à défaut de vous offrir le "pot" de l'amitié pour votre implication personnelle.
Merci bcp à vous.
 

Staple1600

XLDnaute Barbatruc
Re : Macro qui intègre des libellés de cellules après chaque tableau

Bonjour à tous


(erreur de compilation : End sub attendu)
Tu as copié/collé le code VBA de Zon (celui présent dans le message de00h26) dans un nouveau classeur ?

Ou tu as utilisé ses pièces jointes ?

Ce message d'erreur veut dire qu'il manque End Sub dans la macro

Exemple : ceci fonctionne
Code:
Sub MaMacro()
Msgbox "Bonjour"
End Sub
Cela génére le message d'erreur
Code:
Sub MaMacro()
Msgbox "Bonjour"

PS:
Une procédure doit commencer par Sub et finir par End Sub
Une fonction doit commencer par Function et finir par End Function
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet