Double boucle_comparaison de cellule (croisement vertical/horizontal data)

Bonjour à tous,

J'ai un soucis sur l'enchainement d'une action. J'aimerai :

- pour chaque cellule dans une plage définie (VariableCostsAccount) qu'elle soit comparée à la valeur de la cellule AV5

- si trouvé alors av5 = al5 sinon rien

- puis passe à AV6 et recommence

j'ai donc l'impression qu'il faudrait une boucle dans une boucle ??

Le fichier est en copie et le début de code sur module. Encore merci !

Bonjour,

Je ne suis pas sûr d'avoir totalement compris et notamment la comparaison à effectuer et la valeur à attribuer dans chaque cas. Mais ce code donne la marche à suivre :

Sub Comparaison()

Dim PlageCompar as range, PlageExamen as range
Dim CellCompar as range, CellExamen as range

Set PlageCompar = Range("AV5:AV???")
Set PlageExamen = Range("VariableCostsAccount")

for each CellCompar in PlageCompar 'pour chaque cellule de la plage de controle (col AV)
    for each CellExamen in PlageExamen 'tester sur chaque cellule de la matrice VariableCosts...
        if CellExamen.value = CellCompar.value then 'si les cellules ont la même valeur
            CellCompar.value = range("AL5").value ‘ ??? ou CellCompar.value = range("AL" & CellCompar.row).value 'la cellule à comparer prend la valeur de la cellule AL5 (ou sinon de la cellule AL à la même ligne)
            exit for 'sortie de boucle et passage à la cellule à comparer suivante
        end if
    next CellExamen
next CellCompar

end sub

Cordialement,

Bonjour,

En regardant votre fichier, j'ai compris votre besoin, à savoir reporter les soldes des comptes de charges uniquement :

option base 1

Sub ReportCouts()

Dim i as long, NbLignes as long
Dim Soldes() as currency

NbLignes = Range("ChargesExportées").rows.count
Redim Soldes(NbLignes)

Range("ChargesExportées[Variable costs]")

for i = 1 to in NbLignes 'pour toutes les lignes du tableau
        if left(Range("ChargesExportées[GL account2]").cells(i).value, 1) = "6" then 'si détection d'une charge en GL account2
            Soldes(i) = Range("ChargesExportées[Balance (€)]").cells(i).value 'Récup du solde correspondant (à cette même ligne) dans notre tableau Soldes
        end if
next i

Range("ChargesExportées[Variable Costs]").value = Soldes 'collage des soldes à reprendre dans Variable Costs

end sub

Cependant, nul besoin de passer par VBA pour cette opération, la simple formule suivante (en Variable costs) suffit :

=SI([@Colonne1]=6 ; [@[Balance (€)]]; "")

Cordialement,

Bonjour 3GB,

Merci pour tes réponses.

Désolé je pense t'avoir induit en erreur cependant ton deuxième message n'est pas nécessaire effectivement nul besoin de VBA ici.

Par contre tu as totalement compris mon besoin dès le début avec ton premier code!

j'ai donc copié le code dans un nouveau module "Comparaison" et l'ai lancé. J'ai cependant 2 montants (en rouge) qui ressortent alors qu'ils ne devraient pas (puisque compte par 7 et compte commençant par 4) :

2020 08 27 10 56 02 dashboard copie xlsm excel

Je cherche encore, je change les formats, mais si tu as une idée je prends toujours ^^

Merci encore pour ton temps !!

Peux-tu me dire de quoi tu as besoin exactement ? J'ai l'impression que ce que tu veux est réglable via excel directement.

Est-ce que tu cherches à ne garder que les soldes des comptes associés aux coûts variables, c'est ça ?

En fait je cherche à réaliser plusieurs indicateurs fi comme calcul des charges variables, calcul des charges fixe, etc.. avec comme source de donnée un export de ma compta indiquant comme tu peux le voir; compte comptable, montant et date (mes infos utiles).

Je souhaite passer par VBA tout simplement parce que mes collègues ne connaissent pas VBA (cela me permet de garder les calculs, le résonnement, INTACTE). Elles ont tendance à être capable de me tuer un fichier ou de supprimer toutes sortes d'info utile, et j'en passe... Dès lors je ne passe plus que par VBA m'évitant ainsi une gestion intempestif de blocage/ protection de certaines données :)

le projet final serait (un indicateur = une colonne = un code) :

- une colonne me permet de calculer les charges variable

- l'autre colonne les charges fixes

- etc

avec graphique actualisation des données etc, mais ça je sais faire :D

Lolopix,

Je reviens vers toi avec une solution qui marche et qui est probablement très proche de celle que tu cherchais. Elle est déclinable à volonté, suivant les besoins de restitutions de l'information.

Cependant, je n'ai peut-être pas parfaitement respecté les affectations que tu avais prévues donc il faudra que tu ajustes toi-même. Tu pourras ajouter une colonne de charges financières également. Enfin, tu as la logique maintenant.

Point très important : le code fait référence à des plages nommées d'excel donc tout changement doit impérativement donner lieu au changement correspondant dans le code (et inversement bien sûr).

Voici le fichier.

je capte l'idée

Je vais voir comment nommer mes plages de manière sereine (et pour pas m'mbrouiller).

je te remercie pour cette solution que je vais retravailler ;) merci infiniment !

Rechercher des sujets similaires à "double boucle comparaison croisement vertical horizontal data"