Bonjour à tous !
Je met le code de ce que je veux faire : Sur chaque ligne je teste la présence de "X" sur 2 colonnes et copie la valeur d'une autre cellule de cette ligne selon la disposition des "X".
La copie s'effectue dans un autre classeur et sur des colonnes prédéfinies selon la disposition des X..
Je me suis sûrement emmêlé les pinceaux parce que le programme ne fait pas vraiment ce que je veux..., pas tout à fait !!
la copie a l'air bonne mais les conditions pas toutes.. déjà si qqn pouvait m'aider à simplifier les conditions.... ^^
Merci bcp d'avance pour le temps passé à me répondre !
Je met le code de ce que je veux faire : Sur chaque ligne je teste la présence de "X" sur 2 colonnes et copie la valeur d'une autre cellule de cette ligne selon la disposition des "X".
La copie s'effectue dans un autre classeur et sur des colonnes prédéfinies selon la disposition des X..
Je me suis sûrement emmêlé les pinceaux parce que le programme ne fait pas vraiment ce que je veux..., pas tout à fait !!
la copie a l'air bonne mais les conditions pas toutes.. déjà si qqn pouvait m'aider à simplifier les conditions.... ^^
Merci bcp d'avance pour le temps passé à me répondre !
Code:
Option Explicit
Sub Macro1()
Dim ln_src As Long
Dim col_src As Integer
Dim ln_dst As Integer
Dim col_dst, coltest As Integer
Dim ws_h, ws_p As Worksheet
Set ws_h = Sheets("Habilitations_par_Profils")
Set ws_p = Sheets("Rôles_par_Profil")
' initialisation en-tête
ln_dst = 2
col_dst = 1
' 5 colonnes à traiter
For col_src = 23 To 78 Step 5
For ln_src = 3 To 1000
If LCase(ws_h.Cells(ln_src, col_src)) = "x" And LCase(ws_h.Cells(ln_src, col_src + 1)) = "" Then
If LCase(ws_h.Cells(ln_src, 13)) = "c" AND LCase(ws_h.Cells(ln_src, 83)) <> "N/A" Then
ws_h.Cells(, 83).Copy ws_p.Cells(ln_dst, col_dst)
ln_dst = ln_dst + 1
End If
ElseIf LCase(ws_h.Cells(ln_src, col_src)) = "x" And LCase(ws_h.Cells(ln_src, col_src + 1)) = "x" Then
If LCase(ws_h.Cells(ln_src, 13)) = "c" AND LCase(ws_h.Cells(ln_src, 85)) <> "N/A" Then
ws_h.Cells(ln_src, 85).Copy ws_p.Cells(ln_dst, col_dst)
ln_dst = ln_dst + 1
End If
End If
Next
col_dst = col_dst + 1
ln_dst = 2
Next
End Sub