VBA boucle avec formule sur base de données

AlCapone

XLDnaute Nouveau
Bonjour à tous,

Je viens solliciter votre aide afin de réaliser une boucle sur une relative "grosse" base de données (8000 lignes et 8 colonnes).

Petite histoire : ce fichier est mis en place pour préparer un fichier d'import ".txt" avec les lignes d'écritures comptables qui vont bien. Jusque là tout va bien. En revanche, je suis bloqué pour complexifier une boucle sur la base que je colle dans un onglet existant "Achats" (toujours le même et sans garder l'historique), utilisant peu ce genre de formule.

Raisonnement :
A partir de la feuille "Achats", et de la colonne 3
SI la 2ème cellule de la colonne à un montant ET que le mot indiqué sur la 1ère cellule est "FNP" ALORS mettre le montant dans la 1ère colonne vide de la colonne "K" ( feuille "ConsoAchats") (et implicitement, si la cellule d'à côté en colonne "L" est vide),
OU si le mot indiqué est "CCA" ou "ANP" alors mettre le montant dans la 1ère cellule vide de la colonne "L" (feuille "ConsoAchats") (et implicitement, si la cellule d'à côté en colonne "K" est vide).

On descend jusqu'à la dernière ligne non vide (en utilisant la colonne A comme référence, puisqu'elle sera toujours renseignée) et on recommence avec la colonne 4 jusqu'à la colonne 8 (dernière colonne).

A savoir :
> les mots "FNP", "ANP" et "CCA", peuvent contenir des espaces avant et après (histoire de simplifier)
> l'ordre des colonnes peut varier d'un mois sur l'autre
> toutes les formules de l'onglet "ConsoAchats" seront mises dans une macro, in fine (je commence déjà par valider mes formules via Excel avant de les enregistrer dans une macro)

En pièce jointe, vous trouverez un extrait du fichier. Vous remerciant, par avance, pour l'intérêt que vous pourriez y apporter.

Bien cordialement

AlCapone
 

Fichiers joints

AlCapone

XLDnaute Nouveau
Bonjour à tous,
Je reviens sur le sujet de la boucle, avec le recul, je suis conscient que l'explication a pu vous endormir à sa lecture.
En pièce jointe, moins de blabla avec le fichier incluant le résultat attendu.
Vous remerciant par avance, pour votre aide.
 

Fichiers joints

AlCapone

XLDnaute Nouveau
Merci Merinos,
Malheureusement notre service informatique ne veut pas nous installer Query :(, d'où VBA.
Te souhaitant une bonne journée
 

merinos

XLDnaute Occasionnel
Pourquoi permettre de rouler en voiture, quand le cheval permets d'arriver....

(Metaphore.... Je connais ce probleme...)
 

zebanx

XLDnaute Accro
Bonjour AlCapone, Merinos, le forum

Un essai en VBA.
Les deux feuilles sont nommées ("BASE", "RES").
Utilisation de deux tableaux pour la restitution car la plage de restitution est non continue.
J'ai par contre considéré que les colonnes 1 et 2 (code et libellé) seraient toujours à la même place (pour remplir le tableau tb) dans le fichier "BASE" et que la remarque "autres colonnes", "pas toujours dans le même ordre" s'appliquaient à partir de la troisième colonne.

xl-ment
zebanx
 

Fichiers joints

AlCapone

XLDnaute Nouveau
[RESOLU] Bonjour zebanx,

o_Oo_Oo_Oo_O
C'est exactement ça...
Un grand grand merci et une bonne journée
AlC.
 
Dernière édition:

AlCapone

XLDnaute Nouveau
Zenbax,

Pour comprendre ta macro

Dans "choix des termes de l'array", tu indiques un "n=0" : à quoi sert-t-il ? est ce pour le nombre de ligne ?
 

zebanx

XLDnaute Accro
Re-

J'aurais pu le mettre ailleurs.
Il n'est pas lié à l'array mais à l'incrémentation pour les tableaux (tb) et (tc) sur le nombre de lignes effectivement.

Potentiellement, tu peux avoir une valeur retrouvée pour chacune des six colonnes de références, définies par un array suivant la répartition finale entre débit (tc,1) ou crédit(tc,2).

Donc oui, "n" c'est le nombre de lignes finales qui peuvent faire 6 fois le nombre de lignes du premier tableau (d'où le redim avec un multiple de *6) pour les tableaux tb et tc.

Tu as bien compris le principe. ;)

@+

Edit : perso, dans le tableau final, j'aurais gardé une colonne spécifique pour indiquer sur chaque ligne restituée la source (FNP, CCA....) pour faciliter la tracabilité. Vieux réflexes.
 

Discussions similaires


Haut Bas