Aide pour enregistrer le format dans une varible
Bonjour,
Débutant depuis quelque jour, j'ai encore du mal a faire des choses qui ont l'air simple...
Mon objectif :
1/ rechercher si au moins une cellule est contient BLQ alors mettre un texte dans une cellule spécifié
2/ rechercher si au moins une cellule est contient ULOQ alors mettre un texte dans une cellule spécifié
3/ rechercher si au moins une cellule est sous format italique alors mettre un texte dans une cellule spécifié
1 et 2 fonctionne très bien mais je ne sais pas comment faire fontionner 3 car je ne sais pas comment enregistrer le format dans la variable
Si quelqu'un sait comment si prendre je suis preneur
Voici mon code certes un peu long :
Sub test2()
Dim r As Range
Dim BLQ As String
Dim ULOQ As String
Dim italique As Boolean
Dim Plage As String
italique = Font.italique = true
BLQ = "BLQ"
ULOQ = "ULOQ"
Plage = "G12:G200"
Set r = Range(Plage).Find(BLQ)
If Not r Is Nothing Then
Range("A17").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "BLQ : Below Limit of Quantitation"
End If
Set r = Range(Plage).Find(ULOQ)
If Not r Is Nothing Then
Range("A17").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "ULOQ : Upper Limit of Quantitation"
End If
Set r = Range(Plage).Find(italique)
If Not r Is Nothing Then
Range("A17").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "Italic and underlined value : Value out of range,"
With ActiveCell.Characters(Start:=1, Length:=29).Font
.Name = "Arial"
.FontStyle = "Italic"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleSingle
.ColorIndex = xlAutomatic
End With
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "but included in the acceptability criteria (+/- 25%)"
End If
End SubMerci beacoup pour votre aide
Adrien
Bonjour,
En un peu plus optimisé et concis :
Sub TEST()
Dim L%
With ActiveSheet
For L = 12 To 200
Select Case .Cells(L, 7)
Case Is = "BLQ"
.Cells(L, 7).Offset(0, 1) = "BLQ : Below Limit of Quantitation"
Case Is = "ULOQ"
.Cells(L, 7).Offset(0, 1) = "ULOQ : Upper Limit of Quantitation"
End Select
If .Cells(L, 7).Font.Italic = True Then .Cells(L, 7).Offset(0, 1) = "Italic and underlined value : Value out of range,"
Next L
End With
End SubPar contre je ne comprend pas, vous bouclez sur G2:G200 et écrivez sur une cellule en dessous de la cellule trouvée, vous écrasez donc des valeurs ? Dans mon exemple j'écris à droite, je vous laisse adapter ci besoin. Je ne comprend pas non plus votre dernière phrase "but included in the acceptability criteria (+/- 25%)"
Si vous n'y arrivez pas merci de joindre un fichier représentatif avec le résultat attendu.
Cdlt,
Re Bonjour,
Merci pour votre aide,
je pense ne pas avoir donnée assez de détail.
Je vous joint un fichier très allégé avec en feuille 1 avant la macro et en feuille 2 ce que je doit obtenir
Le but est d'écrire que 1 seule fois les textes même si il y a plusieurs fois la présense de "BLQ" / "ULOQ" / .Font.Italic = True
(les textes sont écris en bas du tableau dans la colonne A , cest à ça que sert le code :
Range("A17").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select )
Merci beaucoup
Adrien
Bonjour,
Un test sur le même principe que précédemment. Le Exit For permet de sortir de la boucle de vérification dès lors que les 2 conditions sont rencontrées, ça accélère le code et ne permet d'écrire qu'une seule fois la condition :
Sub MEF()
Dim L%
With ActiveSheet
If Not .[G2:G200].Find("BLQ") Is Nothing Then .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).Offset(1) = "BLQ : Below Limit of Quantitation"
If Not .[G2:G200].Find("ULOQ") Is Nothing Then .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).Offset(1) = "ULOQ : Upper Limit of Quantitation"
For L = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(L, 7).Font.Italic = True And .Cells(L, 7).Font.Underline = xlUnderlineStyleSingle Then
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).Offset(1) = "Italic and underlined value : Value out of range,"
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).Offset(1) = "but included in the acceptability criteria (+/- 25%)"
Exit For
End If
Next L
End With
End SubCdlt,
Bonjour,
Cette macro marche très bien (il ne me reste plus qu'à ajouté une petite mofif de format sur un teste). Je n'avais pas besoin d'affecter des variables après tout et je me suis compliqué la tache. Merci pour le tips du exit for !
merci beaucoup pour votre aide et votre implication
Adrien