Bonjour,
j'ai une formule, extrêmement longue qui me permet de changer d'heure (heure été, heure hiver) automatiquement sans interférer dans le calcul en fonction d'autres cellules. je vous la donne pour juger de la longueur de cette formule.
Pourriez vous me donner la solution pour que cette formule puisse etre mise dans une cellule via vba car j'ai essayé avec 2 variables mais cela ne marche pas. Enfin cela fonctionne mais je n'ai pas toute la formule. Le nombre de caractère doit être limité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 =SI(ET(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());JOUR(AUJOURDHUI()))>=DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(B2;CHERCHE(":";B2;1)-1)="0";DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1))+1;DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1)));1)-JOUR(DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(B2;CHERCHE(":";B2;1)-1)="0";DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1))+1;DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1)));1))+8-JOURSEM(DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(B2;CHERCHE(":";B2;1)-1)="0";DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1))+1;DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1)));1)-JOUR(DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(B2;CHERCHE(":";B2;1)-1)="0";DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1))+1;DROITE(B2;NBCAR(B2)-CHERCHE(":";B2;1)));1))+7)+(GAUCHE(B2;CHERCHE(":";B2;1)-1)*7-7);DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());JOUR(AUJOURDHUI()))<DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(C2;CHERCHE(":";C2;1)-1)="0";DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1))+1;DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1)));1)-JOUR(DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(C2;CHERCHE(":";C2;1)-1)="0";DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1))+1;DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1)));1))+8-JOURSEM(DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(C2;CHERCHE(":";C2;1)-1)="0";DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1))+1;DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1)));1)-JOUR(DATE(ANNEE(AUJOURDHUI());SI(GAUCHE(C2;CHERCHE(":";C2;1)-1)="0";DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1))+1;DROITE(C2;NBCAR(C2)-CHERCHE(":";C2;1)));1))+7)+(GAUCHE(C2;CHERCHE(":";C2;1)-1)*7-7));DROITE(D2;NBCAR(D2)-CHERCHE(":";D2;1));GAUCHE(D2;CHERCHE(":";D2;1)-1))
J'ai bien vérifié dans mes variables formule, j'ai bien tout ce que je dois avoir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Dim i As Integer, formule1 As String, formule2 As String i = 1 formule1 = "=IF(AND(DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()))>=DATE(YEAR(TODAY()),IF(LEFT(B1,SEARCH("":"",B1,1)-1)=""0"",RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))+1," formule1 = formule1 & "RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))),1)-DAY(DATE(YEAR(TODAY()),IF(LEFT(B1,SEARCH("":"",B1,1)-1)=""0"",RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))+1," formule1 = formule1 & "RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))),1))+8-WEEKDAY(DATE(YEAR(TODAY()),IF(LEFT(B1,SEARCH("":"",B1,1)-1)=""0"",RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))+1," formule1 = formule1 & "RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))),1)-DAY(DATE(YEAR(TODAY()),IF(LEFT(B1,SEARCH("":"",B1,1)-1)=""0"",RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))+1," formule1 = formule1 & "RIGHT(B1,LEN(B1)-SEARCH("":"",B1,1))),1))+7)+(LEFT(B1,SEARCH("":"",B1,1)-1)*7-7),DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()))<DATE(YEAR(TODAY())," formule2 = "IF(LEFT(C1,SEARCH("":"",C1,1)-1)=""0"",RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))+1,RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))),1)-DAY(DATE(YEAR(TODAY()),IF(LEFT(C1,SEARCH("":"",C1,1)-1)=""0""," formule2 = formule2 & "RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))+1,RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))),1))+8-WEEKDAY(DATE(YEAR(TODAY()),IF(LEFT(C1,SEARCH("":"",C1,1)-1)=""0"",RIGHT(C1,LEN(C1)" 'c'est ici que cela s'arrete avant les 3 derniers caractères "C1)" formule2 = formule2 & "-SEARCH("":"",C1,1))+1,RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))),1)-DAY(DATE(YEAR(TODAY()),IF(LEFT(C1,SEARCH("":"",C1,1)-1)=""0"",RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))+1," formule2 = formule2 & "RIGHT(C1,LEN(C1)-SEARCH("":"",C1,1))),1))+7)+(LEFT(C1,SEARCH("":"",C1,1)-1)*7-7)),RIGHT(D1,LEN(D1)-SEARCH("":"",D1,1)),LEFT(D1,SEARCH("":"",D1,1)-1))" MsgBox formule1 & formule2 'ne me donne pas toute la formule (J'ai tout jusquà la moitié de formule2) While Worksheets("Aeroport").Range("A" & i) <> "" Worksheets("Aeroport").Range("E" & i).formula = "=IF(AND(B1=""N/A"",C1=""N/A""),D1,Z1)" Worksheets("Aeroport").Range("Z" & i).formula = formule1 & formule2 ' ne me donne pas la formule complète (J'ai tout jusquà la moitié de formule2) i = i + 1 Wend
Merci par avance.
Partager