Aide avec mon code VBA
Sub filtre_et_effectuer_DIMAX()
Dim ws As Worksheet
Dim lastRow As Long
Dim lastColumn As Long
Dim i As Long
Dim headerCell As Range
Dim targetColumn As Integer
' Définir la feuille de calcul à utiliser
Set ws = ThisWorkbook.Sheets("DATA_916")
' Trouver la dernière ligne de données dans la colonne A
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).row
' Déterminer la dernière colonne de données
lastColumn = ws.Cells(7, ws.Columns.Count).End(xlToLeft).Column
' Appliquer le filtre sur la colonne A
ws.Range("$A$7:" & ws.Cells(lastRow, lastColumn).Address).AutoFilter Field:=1, Criteria1:="46868508"
' Parcourir les lignes de A8 à la dernière ligne de données
For i = 8 To lastRow
' Vérifier si la valeur de la colonne A est égale à 46868508
If ws.Cells(i, "A").Value = 46868508 Then
' Recherche de l'entête spécifié dans la ligne 6
Set headerCell = ws.Rows(6).Find("1170")
' Applique la formule si l'entête est trouvé
If Not headerCell Is Nothing Then
targetColumn = headerCell.Column - ws.Range("Q6").Column
ws.Cells(i, "Q").FormulaR1C1 = "=RC[" & targetColumn & "]"
Else
MsgBox "Entête non trouvé dans la ligne 6.", vbExclamation
End If
' Recherche de l'entête spécifié dans la ligne 6
Set headerCell = ws.Rows(6).Find("1070")
' Applique la formule si l'entête est trouvé
If Not headerCell Is Nothing Then
targetColumn = headerCell.Column - ws.Range("R6").Column
ws.Cells(i, "R").FormulaR1C1 = "=VLOOKUP(RC[" & targetColumn & "],PARAMETRES!R7C12:R16C15,2,FALSE)"
Else
MsgBox "Entête non trouvé dans la ligne 6.", vbExclamation
End If
' Recherche de l'entête spécifié dans la ligne 6
Set headerCell = ws.Rows(6).Find("1070")
' Applique la formule si l'entête est trouvé
If Not headerCell Is Nothing Then
targetColumn = headerCell.Column - ws.Range("S6").Column
ws.Cells(i, "S").FormulaR1C1 = "=VLOOKUP(RC[" & targetColumn & "],PARAMETRES!R7C12:R16C15,4,FALSE)"
Else
MsgBox "Entête non trouvé dans la ligne 6.", vbExclamation
End If
' Macro nb_palettes
ws.Cells(i, "T").FormulaR1C1 = "=IF(RC[-1]<>R4C19,0,1)"
' Macro nb_BR_DIMAX
ws.Cells(i, "U").FormulaR1C1 = "=IF(RC[-2]<>R4C19,0,1/COUNTIF(R8C2:R1048576C2,RC[-19]))"
End If
Next i
' Supprimer le filtre
'ws.AutoFilterMode = False
End Sub
j'ai besoin d'aide pour débuger ce code VBA:
dans ma base de données, je dois chercher certaines valeurs qui ont un entête pour les inclure dans mes calculs: Or, je n'arrive pas à faire la m^me chose que j'ai fais pour cette partie du code :
' Macro nb_BR_DIMAX
ws.Cells(i, "U").FormulaR1C1 = "=IF(RC[-2]<>R4C19,0,1/COUNTIF(R8C2:R1048576C2,RC[-19]))"
la ormule excel est la suivante, et j'ai besoin de calquer le même prinip en VBA et de retrouver la bonne colonne pour effectuer le calcul car mes données peuvet être amenés à bouger entre les colonnes
Bonsoir,
nous avons besoin d'aide pour débuguer votre demande !
première chose à faire est d'éditer votre message afin de mettre sous "balise" votre code. La balise à utiliser est celle-ci :
Ensuite, relisez à minima votre demande et corrigez les quelques erreurs de frappe afin que l'on comprenne la demande !
@ bientôt
LouReeD