Intégrer une ou des formule(s) en VBA

2 réponses
Avatar
JeanYvesGascon
Bonjour =E0 toutes & tous

Je souhaiterai int=E9grer des formules en VBA afin d'all=E9ger,
d'acc=E9l=E9rer mon fichier.

[C6:C3000] sont des lieux =E0 compl=E9ter selon une liste d=E9roulante
depuis "Liste_Eta" =3DDonn=E9es!$A$2:$A$70
Chaque lieux se terminent par la lettre "E" ou "M".
J'ai entr=E9 la formule en I6 suivante =3DDROITE($C6;1) que j'ai recopi=E9e
en [I6:I3000].
Est il possible d'entrer une formule en vba, plut=F4t que cette
recopie ?

Je souhaiterai d'une part,
que si en I6 j'ai la lettre "E" alors la colonne [L:L] soit masqu=E9e,
que si en I6 j'ai la lettre "M" alors la colonne [J:J] soit masqu=E9e.
Est ce possible en vba ?

D'autre part, les trois colonnes J, K, L sont renseign=E9es chacune par
une liste d=E9roulante sur le m=EAme principe que ci dessus.
En J nous aurons "BCD", "EPL" et "IC"; en K nous aurons "EPL" et "GR"
et en L nous aurons "BCD" et "ET".
En "M" je souhaiterai que si "BCD", "EPL" sont une des valeurs de J,K
ou L alors inscrire la valeur "NePasRemplacer".
J'ai donc entrer la formule conditionnelle
=3DSI(OU($J7=3D"bcd";$J7=3D"epl";$K7=3D"epl";$L7=3D"bcd");"NePasRemplacer";=
"=E0
faire")
Or, j'avais param=E9trer les colonnes [A:H] vis =E0 vis de la valeur des
cette colonne M, en fait [M6:M3000], en mise en forme conditionnelle
(MEFC) =3DET($B6>=3DTODAY;ESTVIDE($M6)).
qui du coup n'est plus vide !!!

Est ce envisageable de transcrire tout ceci par de la programmation
VBA ?

D'avance merci pour vos pr=E9cieuses collaborations ainsi que vos
=E9clairages salvateurs.

Bon courage

Jean-Yves

2 réponses

Avatar
Sam
Bonjour,
il y a des choses que je ne comprends pas :

"que si en I6 j'ai la lettre "E" alors la colonne [L:L] soit masquée,
"que si en I6 j'ai la lettre "M" alors la colonne [J:J] soit masquée.
pourquoi cacher toute une colonne en fonction de I6, et pourquoi pas en
fonction de I7 ou I8 ?

- en M , faut qu'il y ait absolument jusqu'en bas du tableau une de ces 2
expressions "NePasRemplacer" "à faire"
On peut peut être envisager qu'il n'y ait rien afin que la MFC fonctionne.

- je crois que dans la MFC, la fonction à utiliser est AUJOURDHUI() et non
TODAY()

- la macro qui remplirait tout ça, serait à déclencher à quelle occasion et
comment ?

- on peut aussi envisager tout faire par formule mais avec un calcul sur
ordre (F9) afin de pas perdre de temps

Cordialement
Michel dit "Sam"

"JeanYvesGascon" a écrit dans le message de
news:
Bonjour à toutes & tous

Je souhaiterai intégrer des formules en VBA afin d'alléger,
d'accélérer mon fichier.

[C6:C3000] sont des lieux à compléter selon une liste déroulante
depuis "Liste_Eta" =Données!$A$2:$A$70
Chaque lieux se terminent par la lettre "E" ou "M".
J'ai entré la formule en I6 suivante =DROITE($C6;1) que j'ai recopiée
en [I6:I3000].
Est il possible d'entrer une formule en vba, plutôt que cette
recopie ?

Je souhaiterai d'une part,
que si en I6 j'ai la lettre "E" alors la colonne [L:L] soit masquée,
que si en I6 j'ai la lettre "M" alors la colonne [J:J] soit masquée.
Est ce possible en vba ?

D'autre part, les trois colonnes J, K, L sont renseignées chacune par
une liste déroulante sur le même principe que ci dessus.
En J nous aurons "BCD", "EPL" et "IC"; en K nous aurons "EPL" et "GR"
et en L nous aurons "BCD" et "ET".
En "M" je souhaiterai que si "BCD", "EPL" sont une des valeurs de J,K
ou L alors inscrire la valeur "NePasRemplacer".
J'ai donc entrer la formule conditionnelle
=SI(OU($J7="bcd";$J7="epl";$K7="epl";$L7="bcd");"NePasRemplacer";"à
faire")
Or, j'avais paramétrer les colonnes [A:H] vis à vis de la valeur des
cette colonne M, en fait [M6:M3000], en mise en forme conditionnelle
(MEFC) =ET($B6>=TODAY;ESTVIDE($M6)).
qui du coup n'est plus vide !!!

Est ce envisageable de transcrire tout ceci par de la programmation
VBA ?

D'avance merci pour vos précieuses collaborations ainsi que vos
éclairages salvateurs.

Bon courage

Jean-Yves
Avatar
Sam
Bonjour,
en attendant d'avoir plus de précisions pour le pb des colonnes cachées et
des cellules de M:M vides
j'ai commencé cette macro pour les lignes 6 à 10 :

Sub remplir_I()
'
'
Dim i As Integer
Dim coffret As Range
For i = 6 To 10

' mise en place de la dernière lettre de C en I
Cells(i, 9).Value = Right(Cells(i, 3).Value, 1)

'commentaire en colonne M fonction du contenu des colonnes J, K , L
'attention sensible à la casse, respecter les majuscules des textes
If (Cells(i, 10).Value = "BCD") Or (Cells(i, 10).Value = "EPL") _
Or (Cells(i, 11).Value = "EPL") Or (Cells(i, 12).Value = "BCD") Then
Cells(i, 13).Value = "NePasRemplacer"
Else
Cells(i, 13).Value = "à faire"
End If

'mise en couleur de A à H
' la condition date est pour l'instant seule utilisée
If (Cells(i, 2).Value >= Date) Then
For Each coffret In Range(Cells(i, 1), Cells(i, 8))
coffret.Interior.ColorIndex = 43
Next coffret
Else
For Each coffret In Range(Cells(i, 1), Cells(i, 8))
coffret.Interior.ColorIndex = xlColorIndexNone
Next coffret
End If

'on y va pour la prochaine ligne
Next i

' cacher colonne
' uniquement fonction de I6
If (Cells(6, 9).Value = "E") Then
Columns("L:L").EntireColumn.Hidden = True
Else
Columns("L:L").EntireColumn.Hidden = False
End If

If (Cells(6, 9).Value = "M") Then
Columns("J:J").EntireColumn.Hidden = True
Else
Columns("J:J").EntireColumn.Hidden = False
End If
End Sub


Cordialement
Michel dit "Sam"

"JeanYvesGascon" a écrit dans le message de
news:
Bonjour à toutes & tous

Je souhaiterai intégrer des formules en VBA afin d'alléger,
d'accélérer mon fichier.

[C6:C3000] sont des lieux à compléter selon une liste déroulante
depuis "Liste_Eta" =Données!$A$2:$A$70
Chaque lieux se terminent par la lettre "E" ou "M".
J'ai entré la formule en I6 suivante =DROITE($C6;1) que j'ai recopiée
en [I6:I3000].
Est il possible d'entrer une formule en vba, plutôt que cette
recopie ?

Je souhaiterai d'une part,
que si en I6 j'ai la lettre "E" alors la colonne [L:L] soit masquée,
que si en I6 j'ai la lettre "M" alors la colonne [J:J] soit masquée.
Est ce possible en vba ?

D'autre part, les trois colonnes J, K, L sont renseignées chacune par
une liste déroulante sur le même principe que ci dessus.
En J nous aurons "BCD", "EPL" et "IC"; en K nous aurons "EPL" et "GR"
et en L nous aurons "BCD" et "ET".
En "M" je souhaiterai que si "BCD", "EPL" sont une des valeurs de J,K
ou L alors inscrire la valeur "NePasRemplacer".
J'ai donc entrer la formule conditionnelle
=SI(OU($J7="bcd";$J7="epl";$K7="epl";$L7="bcd");"NePasRemplacer";"à
faire")
Or, j'avais paramétrer les colonnes [A:H] vis à vis de la valeur des
cette colonne M, en fait [M6:M3000], en mise en forme conditionnelle
(MEFC) =ET($B6>=TODAY;ESTVIDE($M6)).
qui du coup n'est plus vide !!!

Est ce envisageable de transcrire tout ceci par de la programmation
VBA ?

D'avance merci pour vos précieuses collaborations ainsi que vos
éclairages salvateurs.

Bon courage

Jean-Yves