Partage
  • Partager sur Facebook
  • Partager sur Twitter

Excel

Etirer une MEF conditionnelle

Sujet résolu
    5 septembre 2020 à 11:08:01

    Bonjour,

    Je ne parviens pas à trouver une réponse à mon problème ou du moins je n'arrive pas à mettre en œuvre les solutions trouvées sur le web :)

    Alors voilà le problème : je souhaiterais appliquer la mise en forme de la cellule B2 (MEF fonction de la valeur d'une autre cellule disons C2) à toute la colonne B sans devoir étirer la cellule vu que les valeurs sont fixes et indépendantes d'une formule .

    En gros, si B2=C2, B2 se met en rouge fluo à pois verts sinon une autre couleur. Ça marche bien pour B2 et C2 mais impossible de l'appliquer aux 9000 autres cellule de la colonne B même en utilisant toutes les possibilités de $, de SI et autres ...

    Le but étant donc que ceci fonctionne pour B3 et C3, B4 et C4 ...

    Un peu d'aide serait vraiment la bienvenue après 4 heures de galère :)

    Merci à tous
    • Partager sur Facebook
    • Partager sur Twitter
      7 septembre 2020 à 1:04:48

      POUR n de 2 à 9002 inclus FAIRE:
          SI Bn = Cn ALORS:
              # tu fais tes zolis petits dessins



      Si la condition est vraie, ça fera la 3ème ligne, sinon, ça passera à n+1 jusqu'à 9002.

      J'ai une préférence pour la couleur fuchsia écarlate.

      • Partager sur Facebook
      • Partager sur Twitter
        7 septembre 2020 à 19:41:00

        Merci bien, c'était ça et puis en fait j'oubliais un argument ...

        Je profite de ta réponse pour enchainer :)

        Un peu plus dur cette fois !!!!!! Avec plusieurs fonctions ... sachant que je suis sur 2010 donc pas de fonction "ALORS"

        Je cherche donc à automatiser une recherche dans une feuille différente puis à remplacer une valeur sur la ligne en cas de retour positif

        Exemple :

        Si le code en Feuille1!C2 est retrouvé parmi la colonne Feuille2!C alors la valeur en Feuille1!D2 est remplacée par la valeur en Feuille2!On de la ligne correspondante sur la Feuille2 et ainsi de suite pour toutes les lignes de la Feuille1!D

        Feuille 1 :

        Feuille 2 :

        Suis-je clair ?

        J'ai essayé quelques fois avec SI RECHERCHE et REMPLACER, mais je pense que je fais une erreur d'argument quelque part ...

        Merci d'avance en tout cas :)

        -
        Edité par DkSy 7 septembre 2020 à 19:47:11

        • Partager sur Facebook
        • Partager sur Twitter
          7 septembre 2020 à 22:00:16

          Je ne fais pas d'Excel, mais, je pense que tu es sur la bonne piste avec RECHERCHE et REMPLACER ;)

          Tu peux te créer une fonction personnalisée tout en te servant des 2 fonctions ci-dessus. Voici 2 liens pour créer une telle fonction, pas la tienne, faudra adapter :

          https://fr.wikiversity.org/wiki/Macros-commandes_VBA/Cr%C3%A9ation_de_Fonction

          https://support.microsoft.com/fr-fr/office/cr%C3%A9er-des-fonctions-personnalis%C3%A9es-dans-excel-2f06c10b-3622-40d6-a1b2-b6748ae8231f

          Quelques conseils :

          Si tu n'as jamais fait de Visual Basic, ce n'est pas très grave, après quelques recherches tu peux te débrouiller tant bien que mal ;

          Tu auras peut-être la réponse entre temps, mais, comme c'est mieux d'apprendre par soi-même et de proposer une correction, tu devrais minimiser tes feuilles sur papier avec 2 lignes dont 1 qui va respecter la condition et l'autre non ;

          Ainsi tu auras le cheminement de la fonction, d'ailleurs, si la fonction est lourde, c'est mieux de l'atomiser en plusieurs fonctions étape par étape, ça les rendra plus modulaire, donc, utilisable dans d'autres fichiers si nécessaire.

          Je viens de faire une ébauche avec un pré-requis. Tu ne vas pas parcourir toutes les colonnes C et D, il te faut connaître la quantité de lignes non vide :

          compteur = 0
          n = 2 # car ça démarre à C2 chez toi
          TANT QUE Cn n'est pas vide FAIRE:
              compteur = compteur + 1
              n = n + 1
          récupérer la valeur de compteur

          Une fois la valeur de compteur récupérée, tu peux parcourir les tableaux, en admettant qu'ils sont de la même taille. Dans le cas contraire, faudra quantifier les lignes non vides et prendre la plus petite valeur de compteur et adapter le reste.

          Mon idée pour le parcours serait :

          POUR x de 2 à n+2 FAIRE:
            Pour y de 2 à n+2 FAIRE:
              SI Feuille1.Cx == Feuille2.Cy ALORS:
                Copier Feuille2.Dy dans Feuille1.Dx
                passer* # d'après un lien, c'est Exit For

          Le lien où j'ai trouvé Exit For : ici.

          Il y a une boucle pour imbriquée dans une autre boucle pour, mais, en gros, voici ce que ça fait :

          x prend la valeur 2, y prend la valeur 2, on vérifie l'égalité entre CX et Cy avec leurs valeurs, soit C2 de Feuille1 et C2 de Feuille2, admettons que la condition est fausse, on remonte dans le 2ème pour (celui avec y), x garde sa valeur 2, y prend 3 comme nouvelle valeur, on teste donc C2 de Feuille1 toujours et C3 de Feuille2, ainsi de suite, mais, disons, que le test ici est VRAI, on a toujours x qui vaut 2 et y qui vaut 3, on copie la valeur de D3 de Feuille2 dans D2 de Feuille1, inutile d'aller plus loin, on passe la boucle pour avec le y, donc, on remonte à la boucle pour avec x et x prend 3 comme valeur et rebelote.

          Il te faut savoir comment :

          coder les cellules de feuilles différentes, coder la copie de valeur, coder si la ligne est vide, les boucles Tant que (While) et Pour (For). Tu auras tes réponses sur un moteur de recherche.

          PS : on ne dit pas retour positif, mais condition VRAIE, c'est un booléen : VRAI ou FAUX ;)

          • Partager sur Facebook
          • Partager sur Twitter
            8 septembre 2020 à 10:58:54

            Cooooool, j'ai compris le concept je vais chercher pour élucider ça moi-même en VBA.

            Encore merci pour ton temps :)

            A la prochaine

            • Partager sur Facebook
            • Partager sur Twitter

            Excel

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown