Tester si des formules existent dans 2 colonnes
Résolu/Fermé
A voir également:
- Tester si des formules existent dans 2 colonnes
- Flash drive tester - Télécharger - Divers Utilitaires
- Formule si et - Guide
- Tester son pc - Guide
- Comment faire des colonnes sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
7 réponses
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
10 sept. 2018 à 18:47
10 sept. 2018 à 18:47
bonjour, pourquoi ne pas partager le code que tu as essayé de réaliser?
suggestion:
suggestion:
Public Sub Formule_Existe() Dim maFeuille As Worksheet Dim cellule As Range Set maFeuille = ActiveSheet For Each cellule In Intersect(maFeuille.UsedRange, Union(maFeuille.Columns("E"), maFeuille.Columns("F"))) If Not cellule.HasFormula Then cellule.Offset(0, 4) = "Non" cellule.Offset(0, 4).Font.ColorIndex = 4 Else cellule.Offset(0, 4) = "Oui" cellule.Offset(0, 4).Font.ColorIndex = 3 End If Next End Sub
Salut yg_be,
Merci pour le code mais ça m'affiche sur les deux colonnes I et J des "Oui" où des "Non" loin vers le bas
donc pas utile de cette façon.
--- Si (E3) contient une formule alors afficher dans la colonne (I3) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (E4) contient une formule alors afficher dans la colonne (I4) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (E16) contient une formule alors afficher dans la colonne (I16) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge uniquement les lignes concernés par un effacement de formule.
--- Etc Etc
Idem pour la colonne (F)
--- Si (F3) contient une formule alors afficher dans la colonne (J3) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (F4) contient une formule alors afficher dans la colonne (J4) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (F22) contient une formule alors afficher dans la colonne (I22) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge uniquement les lignes concernés par un effacement de formule
merci pour ton aide, bonne soirée a toi.
Cdlt Ray
Si si pas de soucis pour partager mais les CODES et MACROS que j'ai essayer ne marche pas bien.
Private Sub Worksheet_Change(ByVal target As Range)
Dim dlig&, lig&
dlig = Cells(Rows.Count, 5).End(xlUp).Row: Application.ScreenUpdating = 0
If Intersect(target, Range("E3:F" & dlig)) Is Nothing Then Exit Sub
For lig = 3 To dlig
With Cells(lig, 5)
.Offset(, 4) = IIf(.HasFormula, "O", "N")
.Offset(, 5) = IIf(.Offset(, 1).HasFormula, "O", "N")
End With
Next lig
'Essai formule en réel
Dim dlig&: Application.ScreenUpdating = 0
dlig = Cells(Rows.Count, 5).End(xlUp).Row
With Target
If .CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("E3:F" & dlig)) Is Nothing _
Then .Offset(, 4) = IIf(.HasFormula, "O", "N")
End With
'Essai sous forme de macro
Public Sub Formule_Existe()
Dim Feuil1 As Worksheet: Dim cellule As Range
Set Feuil1 = ActiveSheet
For Each cellule In Intersect(Feuil1.UsedRange, Union(Feuil1.Columns("E"), Feuil1.Columns("F")))
If Not cellule.HasFormula Then
cellule.Offset(0, 4).Font.ColorIndex = 4
Else
cellule.Offset(0, 4).Font.ColorIndex = 3
End If
Next
End Sub
Merci pour le code mais ça m'affiche sur les deux colonnes I et J des "Oui" où des "Non" loin vers le bas
donc pas utile de cette façon.
--- Si (E3) contient une formule alors afficher dans la colonne (I3) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (E4) contient une formule alors afficher dans la colonne (I4) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (E16) contient une formule alors afficher dans la colonne (I16) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge uniquement les lignes concernés par un effacement de formule.
--- Etc Etc
Idem pour la colonne (F)
--- Si (F3) contient une formule alors afficher dans la colonne (J3) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (F4) contient une formule alors afficher dans la colonne (J4) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge
--- Si (F22) contient une formule alors afficher dans la colonne (I22) en vert ‘’Oui’’ sinon ‘’Non’’ en rouge uniquement les lignes concernés par un effacement de formule
merci pour ton aide, bonne soirée a toi.
Cdlt Ray
Si si pas de soucis pour partager mais les CODES et MACROS que j'ai essayer ne marche pas bien.
Private Sub Worksheet_Change(ByVal target As Range)
Dim dlig&, lig&
dlig = Cells(Rows.Count, 5).End(xlUp).Row: Application.ScreenUpdating = 0
If Intersect(target, Range("E3:F" & dlig)) Is Nothing Then Exit Sub
For lig = 3 To dlig
With Cells(lig, 5)
.Offset(, 4) = IIf(.HasFormula, "O", "N")
.Offset(, 5) = IIf(.Offset(, 1).HasFormula, "O", "N")
End With
Next lig
'Essai formule en réel
Dim dlig&: Application.ScreenUpdating = 0
dlig = Cells(Rows.Count, 5).End(xlUp).Row
With Target
If .CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("E3:F" & dlig)) Is Nothing _
Then .Offset(, 4) = IIf(.HasFormula, "O", "N")
End With
'Essai sous forme de macro
Public Sub Formule_Existe()
Dim Feuil1 As Worksheet: Dim cellule As Range
Set Feuil1 = ActiveSheet
For Each cellule In Intersect(Feuil1.UsedRange, Union(Feuil1.Columns("E"), Feuil1.Columns("F")))
If Not cellule.HasFormula Then
cellule.Offset(0, 4).Font.ColorIndex = 4
Else
cellule.Offset(0, 4).Font.ColorIndex = 3
End If
Next
End Sub
Re salut ye_be
bon je le tient presque LOL
juste modifier svp
1) il faudrait que l'affichage des colonnes (I et J) démarre en (I3 et J3) car les lignes 1 et 2 prise pour entètes
2) faire le test sur 35 lignes sinon ca descends jusqu'à perpète
merci bien bonne soirée
Cdlt Ray
bon je le tient presque LOL
juste modifier svp
1) il faudrait que l'affichage des colonnes (I et J) démarre en (I3 et J3) car les lignes 1 et 2 prise pour entètes
2) faire le test sur 35 lignes sinon ca descends jusqu'à perpète
merci bien bonne soirée
Cdlt Ray
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
10 sept. 2018 à 23:08
10 sept. 2018 à 23:08
par macro, remplacer la ligne for each par:
For Each cellule In maFeuille.[E3:F37]
Salut yg_be
Merci pour la modification du code tout fonctionne très bien selon mon besoin.
Je te souhaite la bonne soirée et encore merci a toi.
Bien cordialement Raymond
Merci pour la modification du code tout fonctionne très bien selon mon besoin.
Je te souhaite la bonne soirée et encore merci a toi.
Bien cordialement Raymond
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re salut yg_be,
Serait t'il possible svp de rajouter le N° de la cellule correspondante a la formule qui a été effacer par erreur, écrire en colonne (I ou J).
A coté Exemple pour la colonne (E)
"Non E15 HS"
Puis quand l'erreur est corrigé
"Oui E15 OK"
--------- ou pour la colonne (F)
"Non F23 HS"
Puis quand l'erreur est corrigé
"Oui F23 OK"
un petit plus au programme et puis voir aussi comment faire ça.
Bonne soirée a toi et grand merci.
Cdlt ray
Serait t'il possible svp de rajouter le N° de la cellule correspondante a la formule qui a été effacer par erreur, écrire en colonne (I ou J).
A coté Exemple pour la colonne (E)
"Non E15 HS"
Puis quand l'erreur est corrigé
"Oui E15 OK"
--------- ou pour la colonne (F)
"Non F23 HS"
Puis quand l'erreur est corrigé
"Oui F23 OK"
un petit plus au programme et puis voir aussi comment faire ça.
Bonne soirée a toi et grand merci.
Cdlt ray
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
11 sept. 2018 à 20:50
11 sept. 2018 à 20:50
exemple, à toi d'adapter:
If Not cellule.HasFormula Then cellule.Offset(0, 4) = "Non " & Replace(cellule.Address, "$", "") & " pas bien" cellule.Offset(0, 4).Font.ColorIndex = 3 Else cellule.Offset(0, 4) = "Oui " & Replace(cellule.Address, "$", "") & " super" cellule.Offset(0, 4).Font.ColorIndex = 4 End If
Hello yg_be,
Merci pour ta réponse et le code, c'est sympa a toi.
ça fonctionne bien MAIS tout se déroule et remplisse les deux colonnes (I et J) comme le montre la photo.
Serait t'il possible svp de traiter ligne par ligne seulement car je n'ai pas besoin de remplir les deux colonnes a chaque fois.
Voir svp le lien ci dessous.
https://www.cjoint.com/c/HImhDF2kKvz
Merci et passe une bonne journée.
Cdlt Raymond
Merci pour ta réponse et le code, c'est sympa a toi.
ça fonctionne bien MAIS tout se déroule et remplisse les deux colonnes (I et J) comme le montre la photo.
Serait t'il possible svp de traiter ligne par ligne seulement car je n'ai pas besoin de remplir les deux colonnes a chaque fois.
Voir svp le lien ci dessous.
https://www.cjoint.com/c/HImhDF2kKvz
Merci et passe une bonne journée.
Cdlt Raymond
Dim Feuil1 As Worksheet: Dim cellule As Range
Application.ScreenUpdating = 0
Set Feuil1 = ActiveSheet
For Each cellule In Feuil1.[E3:F34]
If Not cellule.HasFormula Then
cellule.Offset(0, 4) = Replace(cellule.Address, "$", "") & " HS"
cellule.Offset(0, 4).Font.ColorIndex = 3
Else
cellule.Offset(0, 4) = Replace(cellule.Address, "$", "") & " Ok"
cellule.Offset(0, 4).Font.ColorIndex = 4
End If
Next
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
1 568
12 sept. 2018 à 19:47
12 sept. 2018 à 19:47
peut-être ainsi?
Private Sub Worksheet_Change(ByVal target As Range) Dim cellule As Range Dim rg As Range Set rg = Intersect(target, target.Parent.[E3:F34]) If Not (rg Is Nothing) Then For Each cellule In rg If Not cellule.HasFormula Then cellule.Offset(0, 4) = Replace(cellule.Address, "$", "") & " HS" cellule.Offset(0, 4).Font.ColorIndex = 3 Else cellule.Offset(0, 4) = Replace(cellule.Address, "$", "") & " Ok" cellule.Offset(0, 4).Font.ColorIndex = 4 End If Next cellule End If End Sub