Le classeur récapitule les absents par équipe.
La macro permet de n'accepter par bloc qu'une absence. Le problème est que jai parfois les memes personnes dans différentes équipes.
Par exemple prenons le bloc 3 ligne 27 et ligne 28.
La pers2 est présente dans l'équipe 1 donc jai mis en place des formules : =SI(C9<>"";C9;""). Du coup la macro prend en compte la formule et considère que la cellule avec la formule est non vide...
Comment faire pour que la macro ne détecte plus les formules dans les cellules grises ?
Re : Macro qui détecte et prend en compte les formules
Bonsoir, ou Bonjour suivant l'heure,
Modeste GD a bien raison de te proposer ".HasFormula"
Au cas où tu ressentes une froideur comme dans un labo de plats surgelés,
Code:
Private Sub CommandButton1_Click()
'Je vérifie s'il y a une formule dans la colonne E (5)
With ActiveSheet
For i = 1 To .Cells(65536, 5).End(xlUp).Row
If .Cells(i, 5).HasFormula Then
.Cells(i, 1).Value = "Il y a une formule dans cette ligne"
End If
Next i
End With
End Sub
je joins un humble exemple en complément.
Amicalement, en espérant n'avoir pas trop été laconique,
Re : Macro qui détecte et prend en compte les formules
Bonjour Mokia, Modeste, Yves, Si...
Si... je puis me permettre d'apporter une solution très simple : pourquoi ne pas utiliser la fonction SpecialCells qui limite automatiquement la boucle à un type de contenu précis ?
Ex :
Code:
Private Sub CommandButton1_Click()
For Each cel In Range("A:C").SpecialCells(xlCellTypeConstants)
cel.Interior.ColorIndex = 4
Next
End Sub
Ce code colorie en vert les cellules qui contiennent des données mais pas celles qui comportent des formules (Cf fichier ci-joint).
Pour obtenir de l'aide sur les différents types de cellules concernées, sélectionner SpecialCells dans le code et appuyer sur F1.
Cette instruction est peu utilisée dans les fils de ce forum et pourtant elle rend de grands services et simplifie le code. Je ne m'en prive pas pour ma part.
Si... je puis me permettre d'apporter une solution très simple : pourquoi ne pas utiliser la fonction SpecialCells qui limite automatiquement la boucle à un type de contenu précis ?
Ex :
Code:
Private Sub CommandButton1_Click()
For Each cel In Range("A:C").SpecialCells(xlCellTypeConstants)
cel.Interior.ColorIndex = 4
Next
End Sub
Ce code colorie en vert les cellules qui contiennent des données mais pas celles qui comportent des formules (Cf fichier ci-joint).
Pour obtenir de l'aide sur les différents types de cellules concernées, sélectionner SpecialCells dans le code et appuyer sur F1.
Cette instruction est peu utilisée dans les fils de ce forum et pourtant elle rend de grands services et simplifie le code. Je ne m'en prive pas pour ma part.
Re : Macro qui détecte et prend en compte les formules
Re: Bonjour Pierrot,
C'est tout-à-fait exact, on peut se passer de la boucle. Et s'il y a plusieurs actions à effectuer sur la plage de cellules, un simple With...End With et la boucle est bouclée !
Bien vu également pour le On Error.
Ah, j'allais oublier : on peut même combiner avec le type de contenu de la cellule. En reprenant l'exemple précédent, on peut restreindre le champ aux cellules contenant des valeurs numériques, par exemple, en ajoutant le paramètre xlNumbers
Code:
Private Sub CommandButton1_Click()
Range("A:C").SpecialCells(xlCellTypeConstants, xlNumbers).Interior.ColorIndex = 4
End Sub
Tu as parfaitement raison mais, pour ma part, je me suis cantonné à proposer une solution qui évite à la boucle de balayer des cellules non concernées par la condition définie. Pierrot est venu bien à propos préciser qu'on pouvait supprimer cette boucle, d'où mon second message.
Il me semble donc qu'il est possible de s'affranchir de cette fonction personnelle.
Pour reprendre la proposition de Yves (mais ça peut également s'appliquer à celle de Si...), je réduirais le code à ceci :
Code:
Private Sub CommandButton1_Click()
Range("E:E").SpecialCells(xlCellTypeFormulas).Offset(0, -4) = "Il y a une formule dans cette ligne"
End Sub
Il me semble difficile de faire plus simple, n'est-il pas ( petit clin d'oeil à celui qui se reconnaîtra).
A moins que quelque chose ne m'échappe car j'avoue n'avoir toujours pas cerné le sens de la question initiale. Et je n'ai pas trouvé dans la feuille une seule formule faisant appel à cette fonction.