Le code VBA decale le resultat attendu

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

PHILIP

XLDnaute Occasionnel
Bonjour à tous
Je suis débutant en vba je dois écrire une macro destinée a analyser automatiquement un classeur. Le début du code fonctionne mais quand j'arrive à la partie mise en forme conditionnelle la y'a un hic la formule
si(gauche(l6;1)=""j"";NB.SI(j48hr;H6);"""")" devient quand je regarde dans mise en forme conditionnelle du classeur
si(gauche(s11;1)=""j"";NB.SI(j48hr;011);"""")" La couleur la police tout y esr mais ce decalage .....
Bruno 45 m' a aider en me faisant mettre un dollar devant L6 et h6 dans la formule et maintenant cela decale la formule à L11 et H11 ( c'est important)
je stagne !!!

Sheets("mon003.09091015_06_02").Activate

With Range("h6")
FormatConditions.Add Type:=xlExpression, Formula1:="=SI(GAUCHE(L6;1)=""j"";NB.SI(j48hr;H6); """")"
With .FormatConditions(1)

.Font.Bold = True
.Font.Italic = False
.Font.Color = -1003520

End With
End With

End Sub



pouvez vous aussi m'indiquer comment appliquer cette mise en forme conditionnelle à la plage H6 H10000 merci encore pour votre aide

--------------------------------------------------------------------------------
 
Re : Le code VBA decale le resultat attendu

bonjour PHILIP

En attendant mieux ,une solution assez longue a l'execution :

Code:
Sub test()
Sheets("mon003.09091015_06_02").Activate
Application.ScreenUpdating = False
For Each cel In Range("H6:H10000")
cel.Select
With cel
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=SI(GAUCHE(L6;1)=""j"";NB.SI(j48hr;H6); """")"
With .FormatConditions(1)
.Font.Bold = True
.Font.Italic = False
.Font.Color = -1003520
End With
End With
Next cel
Application.ScreenUpdating = True
End Sub
 
Re : Le code VBA decale le resultat attendu

Merci Pierre-Jean pour ton aide

Comme je l'ai expliqué je suis débutant en vba pourriez vous m'expliquer votre code par des commentaires, A noter qu'il est effectivement long à s'executer je suis obligé de l'arrëteret là il me mets en code d'erreur comme la methode de couleur font à echouée ou la methode italic à echouée ou la methode cell select à echouée
dur dur
 
Re : Le code VBA decale le resultat attendu

Maitre Pierre, bonjour ... bises à Dany 😉

Philip, je ne comprends pas pourquoi tu as fait un autre poste pour le même problème que https://www.excel-downloads.com/threads/vba-ma-formule-se-decalle.127411/

De plus je ne comprends pas que tu es le problème indiqué puisque le code place le format conditionnel en H6
Code:
With Range("h6")
😕

Alors tu ne pourrais pas nous joindre ton fichier et expliquer un peu plus en détail ce qui ce passe !?

A+
 
Re : Le code VBA decale le resultat attendu

Salut,

on peut définir le contenu et le style directement par VBA ainsi (sans formule ni MFC) :
Code:
Sub test()
  Dim Cel As Range
  Sheets("mon003.09091015_06_02").Activate
  Application.ScreenUpdating = False
  For Each Cel In Range("H6:H10000")
    If Left(Cel.Offset(, 4), 1) = "j" Then
      Cel = Application.WorksheetFunction.CountIf(Range("j48hr"), Cel.Offset(, -1))
      Cel.Font.Bold = False
      Cel.Font.Color = -1003520
    Else
      Cel = ""
    End If
  Next Cel
  Application.ScreenUpdating = True
End Sub
 
Re : Le code VBA decale le resultat attendu

Re

Version plus rapide (incorporant les $ de BRUNO)

Code:
Sub test()
Sheets("Feuil1").Activate
With Range("H6")
Range("H6").Select
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=SI(GAUCHE($L$6;1)=""j"";NB.SI(j48hr;$H$6); """")"
With .FormatConditions(1)
.Font.Bold = True
.Font.Italic = False
.Font.Color = -1003520
End With
End With
Range("H6").Copy
Range("H6:H10000").PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
End Sub
 
Re : Le code VBA decale le resultat attendu

Bonjour à Tous
Je suis débutant en vba je dois écrire une macro destinée a analyser automatiquement un classeur. Le début du code fonctionne mais quand j'arrive à la partie mise en forme conditionnelle la y'a un hic la formule
si(gauche(l6;1)=""j"";NB.SI(j48hr;H6);"""")" devient quand je regarde dans mise en forme conditionnelle du classeur
si(gauche(s11;1)=""j"";NB.SI(j48hr;011);"""")" La couleur la police tout y esr mais ce decalage .....
Me revoila avec mon probleme de code qu'il me faut absolument resoudre avant de continuer à travailler ce fichier
Voici le code que j'emploi à tester sur le fichier
je n'y ai mis que du joy01 et 02 j'èspere que vous arriverez à m'aider (merci à Pierrejean et à bruno M45 ) la plage j48hr devant se trouver dans le feuillé carte des délais encore une fois merci pour votre aide
Sub amelioration()
'reprise de mise_en_page
Range("A:A,C:C,D😀,E:E,M:M,S:AK").Delete Shift:=xlToLeft
Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("E1").FormulaR1C1 = "=INT(RC[1]/1000)"
Range("E1").AutoFill Destination:=Range("E1:E10000"), Type:=xlFillDefault
Columns("A:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Rows("1:5").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Dim ListSh() As Variant
'On inscrit les noms dans un tableau
ListSh = Array("dhl24", "dhl48", "joy24", "joy48", "joy72", "mon24", "mon48", "mon72", "mon96", "tnt", "tof", _
"Autriche", "Allemagne", "Italie", "Suisse", "CZ", "DK", "PL", "ferié", "carte des délais")
'on boucle du plus petit indice au plus grand indice du tableau
For i = LBound(ListSh) To UBound(ListSh)
'on cré la feuille après la dernière feuille existante
Sheets.Add after:=Sheets(Sheets.Count)
'on nomme la nouvelle feuille
ActiveSheet.Name = ListSh(i)
Next

[B3:B13] = Application.Transpose(Array(1, 2, 3, 8, 26, 52, 58, 59, 71, 78, 79))
ActiveWorkbook.Names.Add Name:="j48hr", RefersTo:=[B3:B13]
End Sub

Sheets("feuil1").Activate
With Range("h6")
FormatConditions.Add Type:=xlExpression, Formula1:="=SI(GAUCHE(L6;1)=""j"";NB.SI(j48hr;H6); """")"
With .FormatConditions(1)

.Font.Bold = True
.Font.Italic = False
.Font.Color = -1003520

End With
End With

End Sub
 

Pièces jointes

Re : Le code VBA decale le resultat attendu

Re

teste ceci

Code:
Sub amelioration()
'reprise de mise_en_page
Range("A:A,C:C,D:D,E:E,M:M,S:AK").Delete Shift:=xlToLeft
Columns("E:E").Insert Shift:=xlToRight
Range("E1").FormulaR1C1 = "=INT(RC[1]/1000)"
Range("E1").AutoFill Destination:=Range("E1:E10000"), Type:=xlFillDefault
Columns("A:C").Insert Shift:=xlToRight
Rows("1:5").Insert Shift:=xlDown
Dim ListSh() As Variant
'On inscrit les noms dans un tableau
ListSh = Array("dhl24", "dhl48", "joy24", "joy48", "joy72", "mon24", "mon48", "mon72", "mon96", "tnt", "tof", _
"Autriche", "Allemagne", "Italie", "Suisse", "CZ", "DK", "PL", "ferié", "carte des délais")
'on boucle du plus petit indice au plus grand indice du tableau
For i = LBound(ListSh) To UBound(ListSh)
'on cré la feuille après la dernière feuille existante
Sheets.Add after:=Sheets(Sheets.Count)
'on nomme la nouvelle feuille
ActiveSheet.Name = ListSh(i)
Next
[B3:B13] = Application.Transpose(Array(1, 2, 3, 8, 26, 52, 58, 59, 71, 78, 79))
ActiveWorkbook.Names.Add Name:="j48hr", RefersTo:=[B3:B13]
'End Sub
Sheets("feuil1").Activate
With Range("h6")
Range("h6").Select
.FormatConditions.Add Type:=xlExpression, Formula1:="=SI(GAUCHE(L6;1)=""j"";NB.SI(j48hr;H6); """")"
With .FormatConditions(1)
.Font.Bold = True
.Font.Italic = False
.Font.Color = -1003520
End With
End With
Range("H6").Copy
Range("H6:H10000").PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
End Sub

Comme je ne sais pas ce que tu souhaites tu pourras tester avec

Code:
.FormatConditions.Add Type:=xlExpression, Formula1:="=SI(GAUCHE([COLOR=blue]$[/COLOR]L[COLOR=blue]$[/COLOR]6;1)=""j"";NB.SI(j48hr;[COLOR=blue]$[/COLOR]H[COLOR=blue]$[/COLOR]6); """")"

NB : j'ai supprimé
, CopyOrigin:=xlFormatFromLeftOrAbove
qui ne passe pas sur ma version
 
Re : Le code VBA decale le resultat attendu

ça marche.....!
Je n'ai pas encore comparé avec le code que j'avais mis dans le message quelle était donc l'erreur ?
Anoter que j'en ai encore huit autres conditions à mettre , ensuite il y 'aura un transfert des données vers leurs feuilles de destination

encore une fois merci PierreJean
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

S
Réponses
0
Affichages
793
Solo_Wing75
S
Réponses
1
Affichages
1 K
Réponses
13
Affichages
2 K
L
  • Question Question
Réponses
3
Affichages
804
lolo06340
L
C
  • Question Question
Réponses
6
Affichages
2 K
Compte Supprimé 979
C
Réponses
22
Affichages
3 K
F
Réponses
5
Affichages
3 K
F
W
Réponses
18
Affichages
8 K
Winniechips
W
Retour