Boucle pour alimentation de colonne

Bonsoir

Je cherche un code VBA afin d'alimenter des valeurs (onlget AGGREGATE) dans des colonnes en reference à un autre onglet (FIFI).

Dans l'onglet FIFI de l'excel joint, j'ai des infos contenues dans plusieurs colonnes.

Je souhaite mettre ces infos sous une meme colonne.

L'explication de l'alimentation des colonnes cherchées est détaillée dans l'excel joint.

Merci de votre aide

Sophie

11tracker-sbu.xlsx (103.87 Ko)

Bonjour Sophie,

je te retourne ton fichier modifié :

11tracker-sbu.xlsm (121.18 Ko)

à l'ouverture du fichier, tu peux voir que ta feuille "AGGREGATE" est entièrement vide (sauf les entêtes)

va sur ta feuille "FIFI" ; Ctrl e ➯ travail effectué

Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Merci je nl'ai ajout" sous forme de bouton macro

Par conte comme supprimer les valeurs des colonnes au debut de chaque lancement afin de ne pas avoir chaque lancement qui s'ajoute a la suite des autres, mais faire du SUPPRIME ET REMPLACE, pour les colonnes, A, H, I, J, K L

Merci

6tracker-sbu-1.xlsm (119.63 Ko)

je te retourne ton fichier modifié :

6tracker-sbu-1.xlsm (128.74 Ko)

merci de me dire si ça te convient.

dhany

Merci Dhany ca fonctionne bien

J'ai une derniere requete un peu complexe que je n'ai pas su reproduire, pour l'alimentation des colonnes E et G de l'onglet AGGREGATE.

La regle est la suivante:

Onglet AGGREGATE, Colonne E prend la valeur de l'onglet FIFI quand:

- Si R est non vide alors je prends la valeur de T

- Si AD est non vide alors je mets ""

- Si AP est non vide alors je prends la valeur de AR

- Si BD est non vide alors je prends la valeur de BF

- Si BR est non vide alors je prends la valeur de BT

Onglet AGGREGATE, Colonne G prend la valeur de l'onglet FIFI quand:

- Si R est non vide alors je mets ""

- Si AD est non vide alors je prends la valeur de AF

- Si AP est non vide alors je prends la valeur de AT

- Si BD est non vide alors je prends la valeur de BH

- Si BR est non vide alors je prends la valeur de BV

Merci

2ème version :

7tracker-sbu-2.xlsm (131.47 Ko)

feuille "AGGREGATE", tu peux voir les colonnes E et G : vides

feuille "FIFI", au choix : clic sur bouton "UPDATE" ; ou Ctrl e

attention : tes données actuelles ne sont pas représentatives pour un vrai test !

exemple : y'a aucune donnée vide en colonne R (de la feuille "FIFI").

fais ce qu'il faut pour de vrais tests, puis donne-moi ton avis.

dhany

Merci Dhany

j'ai nettoyé le fichier, mais les colonnes E et G ne s'alimentent pas.

Seule E s'alimente pour les 11 premieres lignes, apres il laisse tout a vide. Ce qui n'est pas bon.

Exemple, en E24 dans AGGREGRATE, je devrais avoir la valeur de FIFI AR4.

De plus la colonne G est toujours vide, or elle ne devrait etre vide qude de G2 à G12 dans AGGREGATE

Pourrais tu jeter un oeil?

Merci de ton aide

Sophie

7tracker-sbu-3.xlsm (83.71 Ko)

au départ, la colonne E est entièrement effacée (sauf entête)

regarde tes règles pour remplir la colonne E :

1 - Si R est non vide alors je prends la valeur de T

2 - Si AD est non vide alors je mets ""

3 - Si AP est non vide alors je prends la valeur de AR

4 - Si BD est non vide alors je prends la valeur de BF

5 - Si BR est non vide alors je prends la valeur de BT

sur la feuille "FIFI" :

selon la colonne A, dernière ligne utilisée = ligne n° 14 ➯ on va lire toutes les lignes 4 à 14

* lignes 4 à 14 : colonne R : y'a une donnée, donc : non vide ➯ pour chaque, selon la règle 1 : on écrit la valeur de T

* après, c'est fini : on s'arrête tout simplement car on a rencontré la dernière ligne (selon la colonne A)

* y'a eu aucun cas où R est vide, ce qui permettrait de tester la règle 2

* la règle 2 sera testée seulement si R est vide

* la règle 3 sera testée seulement si (R est vide et AD est vide)

* la règle 4 sera testée seulement si (R est vide et AD est vide et AP est vide)

* la règle 5 sera testée seulement si (R est vide et AD est vide et AP est vide et BD est vide)

j'ai pas encore mangé, alors j'te laisse : j'fais une pause-repas !

dhany

Merci Dhany

Je me suis certainement mal expliquée dans mes explications.

Il ne faut pas arreter les boucles mais forcer une valeur a vide et continuer comme l'explication donnée.

Par exemple, pour AD, il faut forcer a vide jusqu'a ce que la derniere ligne non vide pour AD, ensuite je passe à la colonne AP

etc.... mais s'il est plus simple de rajouter les colonnes au lieu de mettre "", alors je vais créer les colonnes pour remplacer le forcage a vide.

la colonne E, dans mon exemplke, doit avoir des valeurs pour toutes les lignes en resultat sauf de 12 à 22, car pas de charge Fonctionnelles en cas de dev.

Tu as bien une valeur dans la colle AP a recuperer, par exemple

d'ou la regle données

1 - Si R est non vide alors je prends la valeur de T

2 - Si AD est non vide alors je mets ""

3 - Si AP est non vide alors je prends la valeur de AR

4 - Si BD est non vide alors je prends la valeur de BF

5 - Si BR est non vide alors je prends la valeur de BT

Qu'en penses tu?

nouvel essai (j'espère qu'ce fichier te donnera les résultats attendus) :

9tracker-sbu-4.xlsm (86.34 Ko)

si c'est ok : inutile de lire la suite, et merci de passer le sujet en résolu.


j'suis vraiment pas sûr, car j'ai pas bien compris ton expression « forcer à vide » !

si c'est pas ça, faut qu'tu précises mieux ! oublions la colonne G pour l'instant.


A) pour la destination, c'est clair : c'est en feuille "AGGREGATE" colonne E, à partir de la ligne 2


B) pour la source : c'est en feuille "FIFI" ; bon ensuite, sur cette feuille "FIFI" :

* de quelle ligne à quelle ligne ? c'est bien des lignes 4 à 14, n'est-ce pas ?

* et selon tes nouvelles infos, faut lire toutes ces lignes pour chaque test à faire, alors ?

* et on fait ces 5 tests successivement :

test 1 : pour chacune des lignes : si R est non vide, prendre la valeur de T

test 2 : pour chacune des lignes : si AD est non vide, ne rien faire (car la cellule destination E est déjà vide)

test 3 : pour chacune des lignes : si AP est non vide, prendre la valeur de AR

test 4 : pour chacune des lignes : si BD est non vide, prendre la valeur de BF

test 5 : pour chacune des lignes : si BR est non vide, prendre la valeur de BT

si j'me suis trompé quelque part, n'hésite pas à m'dire où !


en plus, pour cette colonne E, mets-moi quels sont les résultats attendus.

quand ça sera ok, je ferai la colonne G de la même façon que pour E

(mais avec les règles spécifiques, qui sont légèrement différentes)

dhany

@SophieB

Tu a écrit :

la colonne E, dans mon exemple, doit avoir des valeurs pour toutes les lignes en résultat sauf de 12 à 22

ajout : si tu essayes le fichier de mon post précédent, tu verras ceci :

* en colonne E : il y a un résultat pour toutes les lignes 2 à 56, sauf 13 à 23.

(je crois que tu t'es trompée d'une ligne : pas 12 à 22, mais 13 à 23)

* en colonne G : aucun résultat des lignes 2 à 12 ; un résultat pour les lignes 13 à 56.

alors en fait, c'est p't'être tout bon ! tu devrais essayer mon fichier !

https://forum.excel-pratique.com/viewtopic.php?p=666690#p666690

dhany

Merci Dhany

Pour simplifier, j'ai ajouté les colonnes dans l'onglet FIFI et mis 0.

Les cellules, s'alimentent bien maintenant

Par contre il n'y a plus de cleansing des cellule quand je lance l'UPDATE et il vient ajouter de nouvelles lignes, apres les dernieres, au lieu de se reposition en A2 sur AGGREGATE

7tracker-sbu-3.xlsm (89.05 Ko)

Pourrais tu voir afin qu'a chaque execution, les valeurs des colonnes A, F, H, I, J, K L, M soient bien effacées

Merci, je te joins la nouvelle version

Sophie

pourquoi n'as-tu pas téléchargé mon fichier précédent ?

screen

essaye-le : c'est peut-être déjà ce qu'il te faut ?

https://forum.excel-pratique.com/viewtopic.php?p=666690#p666690

dhany

Dhany

J'ai reussi a simplifier les formules et à arriver à mes fins

Merci bcp pour ta precieuse aide

Pour le clear j'ai fait simple:.

Worksheets("AGGREGATE").Range("A2:A65536").ClearContents

Worksheets("AGGREGATE").Range("F2:F65536").ClearContents

Worksheets("AGGREGATE").Range("H2:M65536").ClearContents

En te souhaitant un tres bon we

Sophie

pour l'effacement, tu peux faire plus simple :

Worksheets("AGGREGATE").Range("A2:A65536, F2:F65536, H2:M65536").ClearContents

merci pour ton retour, et pour avoir passé le sujet en résolu !

très bon weekend à toi aussi !

dhany

Merci Dhany, je n'avais pas vu le fichier au debut du message

Tu me sauves mon we, ca focntionne à la perfection

Je te souhaite un excellent we

on s'est croisés ! j'ai modifié mon message précédent !

j'suis ravi qu'ça fonctionne à la perfection !!!

excellent weekend à toi aussi !

dhany

Rechercher des sujets similaires à "boucle alimentation colonne"