Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…