Reproduction de tableau avec calcul incorpore

Ardamire

XLDnaute Nouveau
Bonjour a toutes et tous,

Voila je me suis permis de joindre un fichier dans lequel j'expose les details de mon probleme mais pour resumer j'ai un tableau source contenant plusieurs donnees.

Mon objectif est de "reproduire" ce tableau une colonne plus loin mais en effectuant un calcul pour certaines colonnes. Les calculs sont simples mais en fait, je souhaiterais l'aide d'une macro car les differentes donnees sont separees par une ligne vierge qui servirait de "borne" pour terminer les calculs des premieres donnees et egalement pour commencer le calcul des suivantes.

Un autre element serait d'effectuer une recherche a partir de cette ligne pour selectionner un parametre du calcul (definit dans la feuille Excel).

Les plages de donnes pouvant etre tres variables d'une fois a l'autre, la ligne de separation est assez interessante pour pouvoir "traiter" le sujet d'autant plus qu'il s'agit du format de sortie des donnees brutes.

D'avance merci pour votre aide et j'espere avoir ete suffisamment explicite ... si pas, j'essayerai de repondre au plus vite et le plus precisement possible a vos questions.

Ardamire.
 

Pièces jointes

  • Problem_Macro.xls
    23.5 KB · Affichages: 100
  • Problem_Macro.xls
    23.5 KB · Affichages: 93
  • Problem_Macro.xls
    23.5 KB · Affichages: 97

Ardamire

XLDnaute Nouveau
Re : Reproduction de tableau avec calcul incorpore

Il faut déclarer Multi comme variant
Code:
Dim Multi As Variant

Bonjour,

J'ai verifie en faisant la modificant de declaration de la variable mais ca ne change pas. Lorsaue je fais la verification, j'obtiens toujours comme resultat un entier de 24 alors que le parametres est de 24,177.

J'ai essaye de placer cette ligne en debut de code en pensant que ca avait de l'importance mais l'issue est identique.

Cordialement.

Ardamire
 

Efgé

XLDnaute Barbatruc
Re : Reproduction de tableau avec calcul incorpore

Bonjour à tous, le fil, le forum,
Il faut ajouter
Code:
Dim Multi As Variant
Mais il faut aussis enlever
Code:
Multi&

Si non ça ne sert à rien...
Cordialement

EDIT Il faut aussis enlever la , : Multi&,
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Reproduction de tableau avec calcul incorpore

Re à tous, Bonsoir CISCO ;) ,
Combien as tu de lignes dans ton fichier réel ? Autre question, combien il y t'il au max entre deux lignes vides ?
Il est vrai que les informations ne sonr pas légions...
En espérant que notre ami Ardamire trouve chaussure à son pied dans nos propositions (et arrive a les exploiter...).
Cordialement
 

CISCO

XLDnaute Barbatruc
Re : Reproduction de tableau avec calcul incorpore

Bonjour

Une autre possibilité en pièce jointe, qui devrait tourner plus vite, mais avec une colonne intermédiaire.

Il reste à à insérer les Unité 7, Unité 8... Ne sachant pas ni où, ni comment tu les choisis, je ne les ai pas mis dans l'équation en P6. A toi de nous préciser la méthode utilisée. Entre autre, est-ce qu'en colonne Q tu n'as que des Unité 7, en colonne S, que des Unité 9... ?

@ plus
 

Pièces jointes

  • Problem_Macro(1) ardamirebis.xls
    33 KB · Affichages: 51
Dernière édition:

Ardamire

XLDnaute Nouveau
Re : Reproduction de tableau avec calcul incorpore

Bonjour a tous,

Concernant le nombre de ligne il sera variable mais ne depassera jamais 5500. Le format d'un fichier complet type est joint sous le nom "Exemple_complet.xls". Ce sera toujours ce canevas qui sera utilise avec une premiere ligne vide et une ligne vierge entre 2 series de donnees (representees par les chiffres 1).

Le point crucial est de conserver le format du nombre avec decimales qui est utilise pour realiser la division.

Merci d'avance.

Ardamire
 

Pièces jointes

  • Exemple_complet.zip
    28.1 KB · Affichages: 30

Efgé

XLDnaute Barbatruc
Re : Reproduction de tableau avec calcul incorpore

Bonjour à tous,
Pour mon dernier passage sur le fil, je maintiens ce que je tente d'expliquer désespéramment....
VB:
Private Sub CommandButton1_Click()
Dim LstCol&, i&, LstColTab&, FrstLig&, z&, c&, a&, k&, b&
Dim Plg, Dico, TabLig, Multi As Variant
Application.ScreenUpdating = False
Columns("K:S").ClearContents
LstCol = ActiveSheet.UsedRange.Columns.Count
Plg = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, LstCol)).Value
Set Dico = CreateObject("Scripting.Dictionary")
For i = LBound(Plg, 1) To UBound(Plg, 1)
   If Plg(i, 1) = "" Then Dico(i) = i
Next i
TabLig = Dico.Keys
For a = LBound(TabLig) To UBound(TabLig) - 1
    LstColTab = 0
    FrstLig = TabLig(a)
    z = 0: Multi = Plg(FrstLig + 3, 2)
    For c = 1 To LstCol
        If Plg(FrstLig + 5, c) <> "" Then LstColTab = LstColTab + 1
    Next c
    For k = 2 To LstColTab Step 2
        z = z + 1
        Plg(FrstLig + 5, k) = "Unite " & LstColTab + z
        For b = 1 To (TabLig(a + 1) - FrstLig) - 6
            Plg(FrstLig + 5 + b, k) = Plg(FrstLig + 5 + b, k) / Multi
        Next b
    Next k
Next a
Cells(1, 11).Resize(UBound(Plg, 1), UBound(Plg, 2)) = Plg
Application.ScreenUpdating = True
End Sub
Cordialement
 

Ardamire

XLDnaute Nouveau
Re : Reproduction de tableau avec calcul incorpore

Re à tous, Bonsoir CISCO ;) ,

Il est vrai que les informations ne sonr pas légions...
En espérant que notre ami Ardamire trouve chaussure à son pied dans nos propositions (et arrive a les exploiter...).
Cordialement

J'ai effectue le changement dans le code comme indique (cf. fichier joint Macro_outil_code) mais apres avoir tout enregistre et teste j'ai encore le meme resultat (cf. fichier joint Macro_outil).

Le resultat de la verification donne un chiffre entier et non un nombre decimal. Je pense avoir respecte les instructions de commande mais j'ai prefere mettre le code en copie au cas ou.

Merci.

Ardamire
 

Pièces jointes

  • Macro_outil.jpg
    Macro_outil.jpg
    49.2 KB · Affichages: 407
  • Macro_outil_code.JPG
    Macro_outil_code.JPG
    38.8 KB · Affichages: 96

Efgé

XLDnaute Barbatruc
Re : Reproduction de tableau avec calcul incorpore

Re
Je ne comprend pas le problème. Fais ce test :
Remplace la ligne
Code:
 z = 0: Multi = Plg(FrstLig + 3, 2)
Par
Code:
 z = 0: Multi = Plg(FrstLig + 3, 2): Debug.Print Multi
Lance le code. Dans la fenêtre Exécution ( Menu Affichage / Fenêtre Exécution ) tu retrouveras toutes les valeurs prises par la variable Multi. Chez moi la premeière valeur est : 24,8464958508918 (C'est loin d'être un entier).
Deuxième solution : Vérifie le format de tes cellules....
Cordialement
 

Ardamire

XLDnaute Nouveau
Re : Reproduction de tableau avec calcul incorpore

Re
Je ne comprend pas le problème. Fais ce test :
Remplace la ligne
Code:
 z = 0: Multi = Plg(FrstLig + 3, 2)
Par
Code:
 z = 0: Multi = Plg(FrstLig + 3, 2): Debug.Print Multi
Lance le code. Dans la fenêtre Exécution ( Menu Affichage / Fenêtre Exécution ) tu retrouveras toutes les valeurs prises par la variable Multi. Chez moi la premeière valeur est : 24,8464958508918 (C'est loin d'être un entier).
Deuxième solution : Vérifie le format de tes cellules....
Cordialement

Voila,

J'ai refait un copier-coller de votre code et j'ai essaye et j'ai maintenant les valeurs qui s'affichent avec toutes les decimales.

Merci beaucoup pour votre patience.

Cedric
 

Ardamire

XLDnaute Nouveau
Re : Reproduction de tableau avec calcul incorpore

Bonjour CISCO,

Il semble que l'outil de Efge fonctionne donc je vais utiliser cet outil.

Je vous remercie sincerement pour le temps que vous m'avez consacre.

A bientot et bonne fin de journee.

Ardamire
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet