MFC VBA

Bonjour à tous !

Voilà actuellement je suis en stage et je dois repenser un fichier excel qui sert à la gestion des zones de stockage. Le fichier compte près de 400 cellules qui peuvent être renseignées et modifiées par l'utilisateur. En fonction de ce qu'il renseignait, jusque là, pour chaque cellule, plusieurs mises en forme conditionnelles étaient appliquées. Cependant le fichier est devenu beaucoup trop conséquent entraînant des pertes de temps à chaque modification. J'ai donc entrepris de créer une macro. Cependant j'ai un petit soucis, je vous explique tout ça :

  • Feuille 1 : Feuille de saisie : C'est ici que les cellules peuvent être modifiées par l'utilisateur
  • Feuille 2 : Feuille base de données : La construction de ma macro m'a permis pour le moment de venir récupérer les données saisies dans la feuille 1 et de les répartir dans différentes colonnes en fonction de certains critères que je cherche à sélectionner.

Mon problème :

- Mon tableau (Feuille 2) comporte diverses colonnes :

Cellule du plan (de la feuille 1) / Code article / Date de palettisation / Boîte étiquetée / Boîte blanche (pas étiquetée)

Ex : A1 / B4615004 / 29/04/14 / 1 / 0

Lorsque la boîte est étiquetée la cellule renseigne "1" sinon "0", de même si la boîte est blanche.

Je souhaite, si nous prenons l'exemple ci-dessus, que puisque ma cellule A1(feuille 1) représente une palette de boîtes étiquetées elle soit alors grisée par exemple.

En résumé j'aimerais que ma macro face ceci :

  • Si boîte étiquetée (valeur "1" dans feuille 2)
  • Alors je regarde qu'elle cellule du plan est renseignée dans feuille 2 (ici A1)
  • Et donc j'applique un fond grisé sur la cellule A1 de la feuille 1

Merci d'avance !! je bloque vraiment là

Bonsoir et bienvenue sur le forum,

Avec fichier jointe c'est plus explicite

Merci !

Oui en effet ce sera plus clair ^^

Bonjour,

Sub griser()
    Dim c As Range
    With Sheets("BD_MFC")
        For Each c In .[J2].Resize(.Cells(Rows.Count, "A").End(xlUp).Row - 1)
            If c = 1 Then
                Sheets("Plan_Travées").Range(c.Offset(, -9)).Interior.ColorIndex = 15
            Else
                ' optionnel
                Sheets("Plan_Travées").Range(c.Offset(, -9)).Interior.ColorIndex = xlNone
            End If
        Next c
    End With
End Sub

eric

Merci beaucoup Eric ! ça fonctionne à merveille !!!

Avez-vous une idée de la construction de la formule pour ceci :

Si dans la colonne B de la feuille "BD_MFC" la première lettre est un B alors mettre en 1 dans la colonne boîte blanche sinon un 0

Si dans la colonne B de la feuille "BD_MFC" la première lettre est un E alors mettre en 1 dans la colonne boîte étiquetée sinon un 0

Bonjour,

=SI(GAUCHE($B2;1)="B";1;0)

eric

edit: tu parlais de formule, c'est peut-être plus un code que tu veux :

Sub BB()
    Dim c As Range
    With Sheets("BD_MFC")
        For Each c In .[B2].Resize(.Cells(Rows.Count, "B").End(xlUp).Row - 1)
            c.Offset(, 7) = IIf(Left(c, 1) = "B", 1, 0)
        Next c
    End With
End Sub

B est sensé toujours être en majuscule, sinon utiliser ucase(Left(c, 1))

Rechercher des sujets similaires à "mfc vba"