Je m'appelle phochka. Je suis nouveau ici et je ne suis pas un expert en VBA mais j'aime bien Excel. Je lance une macro, alors que je mets la référence relative, j'obtiens la Row en dur. Comme j'utilise la macro ailleurs par exemple Row 1149, il me remet en Row1200. Ci-joint le fichier
Merci.
Sub Macro3()
'
' Macro3 Macro
'
' Touche de raccourci du clavier : Option+Cmd+y
'
ActiveCell.FormulaR1C1 = _
"=IF(COUNTIF(R1200C4:RC23,R1C),COUNTIF(R1200C4:RC23,R1C),"""")"
ActiveCell.Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:BR1"), Type:= _
xlFillDefault
ActiveCell.Range("A1:BR1").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:BR42"), Type:= _
xlFillDefault
ActiveCell.Range("A1:BR42").Select
End Sub
Sub Macro3_ter()
Dim Ligne$
Ligne = CStr(ActiveCell.Row)
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R" & Ligne & "C4:RC23,R1C),COUNTIF(R" & Ligne & "C4:RC23,R1C),"""")"
End Sub
Bonsoir.
En notation A1 quelle devrait être la formule ?
N'oubliez pas de préciser pour quelle cellule en particulier, puisque la notaion R1C1 correspondante en dépend.
Sub Macro3_bis()
Dim Ligne$
Ligne = "1600"
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R" & Ligne & "C4:RC23,R1C),COUNTIF(R" & Ligne & "C4:RC23,R1C),"""")"
End Sub
Sub Macro3_bis()
Dim Ligne$
Ligne = "1600"
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R" & Ligne & "C4:RC23,R1C),COUNTIF(R" & Ligne & "C4:RC23,R1C),"""")"
End Sub
Et cette version qui s'adapte automatiquement selon le nombre de lignes en colonne A.
VB:
Sub test_II()
Application.ScreenUpdating = False
Dim Ligne&
Ligne = Cells(Rows.Count, "A").End(3).Row
Range([Y2], Cells(Ligne, "CP")).FormulaR1C1 = "=IF(COUNTIF(R2C4:RC23,R1C),COUNTIF(R2C4:RC23,R1C),"""")"
End Sub
Encore merci,
Les 2 versions sont intéressantes, ils me montrent plusieurs façons d'adapter une macro.
Toutefois, je reviens à mon problème initial, j'aurais aimé que dans le 1er cas, Y2:CP50 me fait toujours revenir au début.
2ème version: Range [Y2] me fait toujours revenir à cette cellule.
En fait, Dim Ligne me parait intéressant, mais je ne sais pas lui indiquer qu'l faut que la ligne soit egale à la ligne ou il se trouve par exemple en ligne 10 au moment ou je fais le test.
je voulais préciser la version qui me semble plus facile à comprendre.
VB:
Sub Macro3_bis()
Dim Ligne$
Ligne = "1600"
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R" & Ligne & "C4:RC23,R1C),COUNTIF(R" & Ligne & "C4:RC23,R1C),"""")"
End Sub
Sub Macro3_ter()
Dim Ligne$
Ligne = CStr(ActiveCell.Row)
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R" & Ligne & "C4:RC23,R1C),COUNTIF(R" & Ligne & "C4:RC23,R1C),"""")"
End Sub