Pb construction Macro - VBA

bloublou

XLDnaute Occasionnel
Bonsoir le forum,

Suite à mon premier fil concernant un nbsi ens ou somme si ens, j'ai eu des réponses de la part de Gosselien, Dugenou, Ra@chid, Jocelyn avec de supers formules matricielles imbriquées avec
nbsi frequence indirect ligne colonne somme prod.

Cela marche nickel pour un tableau de 100 lignez, seulement dans mon cas perso je dois arriver à compiler les données de 25 colonnes sur + 50 000 lignes et effecitvement comme l'a dit Jocelyn, ca rame, pour ma part Ecel a planté carrément :-( :(

Merci encore à Dugenou, Jocelyn, Ra@chid, Gosselein pour leur aide :)

Je vais essayer de reposer le pb pour ceux qui veulent bien m'aider en VBA : :confused: :confused: :confused:

1) Je voudrais dans un premier temps compter le nombre lignes en supprimer les doublons à partir du num d'identification pour tous les groupes et tous les choix disponibles avec 2 contraintes :
Les choix sont répartis sur plusieurs colonnes et ne sont jamais à la même place.

Je vais prendre un exemple pour le groupe A, je devrais arriver au résultat de 3, ca serait comme faire un sous total avec comme critère le groupe A, le num d'identification et le choix.

2) Dans un deuxieme temps je voudrais à partir de ces contraintes arriver faire la somme des montants mais là la différence est notable, il faudrait ajouter toutes les lignes :
Je reprends mon exemple pour le groupe A je devrais arriver à 3 625 201,08€ (cellules en rouge et blanc)


Si quelqu'un peut m'aider à trouver une piste ou un début d'aide en VBA ?

Merci d'avance

BlouBlou
 

Pièces jointes

  • bloublou V1.xlsx
    29.3 KB · Affichages: 42
  • bloublou V1.xlsx
    29.3 KB · Affichages: 48
  • bloublou V1.xlsx
    29.3 KB · Affichages: 43

ROGER2327

XLDnaute Barbatruc
Re : Pb construction Macro - VBA

Bonjour bloublou.


Un essai dans le classeur joint. (J'espère avoir compris...)


Bonne journée.


ℝOGER2327
#7038


Vendredi 6 Sable 141 (Saint Navet et Perruque, humanistes - fête Suprême Quarte)
16 Frimaire An CCXXII, 1,7779h - ajonc
2013-W49-5T04:16:01Z
 

Pièces jointes

  • XLD_214211_bloublou.xlsm
    31 KB · Affichages: 53

bloublou

XLDnaute Occasionnel
Re : Pb construction Macro - VBA

Bonjour le forum, Bonjour ROGER2327,

Whaaaaa !!! :)
ça marche nickel.

Avec aussi peu de lignes de codes pour arriver à ce résultat :) :) :)
Peux tu m'expliquer à peine ta méthode ?

Merci en tout cas :) :)

Bonne journée,

BlouBlou
 

bloublou

XLDnaute Occasionnel
Re : Pb construction Macro - VBA

Re le Forum, ROger2327,

Je revenais dessus, j'ai un pb avec mon cas réél quand je veux l'appliquer, peut etre du au grand nombre de données :

il bloque à :

.Offset(3 + UBound(Table1)).Value = Table2 avec Ubound(Table1)=239
C'est un dépassement de capacité ?

Merci

BlouBlou
 

bloublou

XLDnaute Occasionnel
Re : Pb construction Macro - VBA

Re bonsoir à tous,

je viens de trouver :)

Par contre j'ai 2 nouveaux pb :(

1) Le calcul est faux si je remplis les 100 000 lignes, on dirait qu'il loupe des lignes...mais je vois pas la raison :( :( :( !!!
2) pb de nouveau critere :j'ai remis un nouveau fichier avec des lignes qui sont vers 65 000 et j'ai modifié le format

Si possible, je voudrais rajouter un critère d'année (derniere colonne) de la feuille DATA, juste pour l'année 2013.
J'ai adapté la feuille excel avec le 1er exemple mais si j'avais la solution en vba sans formatage de la feuille ca serait super :) :)

Merci beaucoup

Bonne soirée
BlouBlou
 

Pièces jointes

  • version2.xlsm
    48.1 KB · Affichages: 51

ROGER2327

XLDnaute Barbatruc
Re : Pb construction Macro - VBA

Re...


En gros, vous changez tout : la structure de la base de données et les critères de sélection.
En attendant le prochain tremblement de Terre, voyez si le classeur joint s'approche de ce que vous voulez maintenant.​


ℝOGER2327
#7039


Samedi 7 Sable 141 (Saint Birbe, juge - fête Suprême Quarte)
17 Frimaire An CCXXII, 5,9871h - cyprès
2013-W49-6T14:22:08Z
 

Pièces jointes

  • XLD_214211_bloublou_3.xlsm
    71.2 KB · Affichages: 57

bloublou

XLDnaute Occasionnel
Re : Pb construction Macro - VBA

Bsr le forum,
En fait je pensais que je pourrais plus facilement l adapter a mon cas.
Mais comme je ne connais rien au scripting dictionnary.. :-(

Le critere en plus c du bonus je reconnais j aurais pu me debrouiller autrement je reconnais.
Je vais regarder votre version demain.

Je vous remercie en tt cas de votre aide ;-);-);-);-)
Bon wk

Bloublou :):):):)
 

bloublou

XLDnaute Occasionnel
Re : Pb construction Macro - VBA

Bonsoir le forum et Roger2327,

Merci pour toute cette macro :) mais chez moi ça marche pas :( :(
Quand je clique en A1 (avec ou sans année) sur la feuille 2 ou feuille 5 resultat j'ai un msg d'erreur :

Erreur d'execution 424, objet requis et il met en surbrillance le lancement de la macro :
Call toto (etc...)

Est ce que je fais quelque chose de mal / ou activer quelque chose, à part le scripting runtime ?

Merci

BlouBlou
 

ROGER2327

XLDnaute Barbatruc
Re : Pb construction Macro - VBA

Bonjour à tous.

Re...
Bonsoir le forum et Roger2327,

Merci pour toute cette macro :) mais chez moi ça marche pas :( :(
Quand je clique en A1 (avec ou sans année) sur la feuille 2 ou feuille 5 resultat j'ai un msg d'erreur :

Erreur d'execution 424, objet requis et il met en surbrillance le lancement de la macro :
Call toto (etc...)

Est ce que je fais quelque chose de mal / ou activer quelque chose, à part le scripting runtime ?

Merci

BlouBlou
Soyons précis, car "ça" marche pas est bien vague...

Si "ça" est le classeur du message #6, je n'ai pas de solution. Je viens de le rouvrir et de constater que "ça" marche.

Si "ça" est un autre classeur dans lequel vous avez porté le code, assurez-vous que vous avez défini les plages nommées requises, comme cela est fait dans le classeur du message #6. On y trouve :


Par exemple, dans l'onglet DATA, "Groupe" est la plage V1:V65522 ; "NumId" est la plage J1:J65522 ; "Année" est la plage DR1:DR65522 ; "Zone" est la plage AE1:BV65522.

Si vous ne voulez pas utiliser de plages nommées (c'est dommage), écrivez les plages en dur :
VB:
  With Worksheets("DATA")
    Call toto(.Range("V1:V65522").Value, .Range("J1:J65522").Value, .Range("AE1:BV65522").Value, 4, 2, Me, "A1", .Range("DR1:DR65522").Value, Me.[A1].Value)
  End With
au lieu de :
VB:
  Call toto(Feuil4.[Groupe].Value, Feuil4.[NumId].Value, Feuil4.[Zone].Value, 4, 2, Me, "A1", Feuil4.[Année].Value, Me.[A1].Value)

D'autre part, si vous avez encore changé la structure de la plage "Zone", adaptez les paramètres pZ et oZ ; si, par exemple, vos colonnes "Choix x" sont placées de 7 en 7 colonnes, pZ est 7 ; si vos colonnes "Choix x" et "Prix Choix x" sont décalées de 3 colonnes, alors oZ est 3.

Bref, tenez compte du commentaire qui accompagne le code :

'Description de la procédure 'toto' :
'toto(G, N, Z, pZ%, oZ%, Feuille As Worksheet, Position$, Optional A, Optional An%)
' <G> : champ 'Groupe'
' <N> : champ 'Numéro identification' associé à <G>
' <Z> : plage contenant tous les champs 'Choix *' et 'Prix Choix *' associés à <G>
' (la première colonne de <Z> est celle du champ 'Choix 1')
' <pZ> : descripteur de la plage <Z> = pas d'espacement des champs 'Choix *'
' <oZ> : descripteur de la plage <Z> = décalage du champ 'Choix *' au champ 'Prix Choix *'
' <Feuille> : référence à la feuille de destination des résultats
' <Position> : descripteur de la feuille <Feuille> = adresse du coin supérieur gauche de la plage de résultats
' <A> (optionnel) : champ de sélection associé à <G> (dans ce classeur : le champ 'Année')
' <An> (optionnel) : valeur du critère de sélection dans le champ <A>
'
'Si <A> et <An> sont omis, la procédure renvoie des résultats globaux.
'Si <A> est défini et <An> est omis ou nul, la procédure renvoie des résultats globaux.
'Si <A> et <An> sont définis, la procédure renvoie des résultats associés au critère <An>.


Comme j'ai rouvert le classeur, j'en ai profité pour éliminer quelques scories et modifier une bricole par ci par là. (Notamment, pour éviter un plantage si par hasard le code est appliqué à feuille de données vide.)
Il reste certainement à faire pour rendre ce code plus costaud (gestion des erreurs, par exemple), mais on verra ça plus tard au cas où... ..."il marche..."​


Bonne nuit.


ℝOGER2327
#7042


Lundi 9 Sable 141 (Saint Sagouin, homme d’Etat - fête Suprême Quarte)
19 Frimaire An CCXXII, 1,1117h - sabine
2013-W50-1T02:40:05Z
 

Pièces jointes

  • qsd23f69.JPG
    qsd23f69.JPG
    41.8 KB · Affichages: 49
  • XLD_214211_bloublou_4.xlsm
    70.5 KB · Affichages: 38

bloublou

XLDnaute Occasionnel
Re : Pb construction Macro - VBA

Bonjour le forum, Bonjour Roger2327,

En fait j'ouvrais le fichier et j'avais l'impression que le double click dans la cellule n'était pas pris en compte tout le temps mais la plupart du temps ca marche :) :)

J'aivais vu les commentaires dans le code mais je ne raccordais pas tous les morceaux :p
Avec vos explications ca va mieux :p

J'ai pu changer les plages dans les noms c'est pour cela que je ne retombais pas sur mes pieds dans le total :)

Merci à vous pour toute cette aide :cool::cool:

Bonne journée

BlouBlou
 

Discussions similaires

Réponses
6
Affichages
302
Réponses
5
Affichages
376
Réponses
5
Affichages
333

Statistiques des forums

Discussions
312 113
Messages
2 085 427
Membres
102 889
dernier inscrit
monsef JABBOUR