Formule selon données

Bonjour

Lorsque je sélectionne la donnée souhaitée en cellule D21 de la feuille "Salariés", je fais la chose suivante

1- Recherche dans la feuille "CCN" en colonne A, la donnée inscrite en cellule D21 de la feuille "Salariés"
2- Je récupère les données présentes de la colonne B à D de la feuille CCN correspondant à la cellule D21 de la feuille salariés et les mets automatiquement dans les cellules concernées aux endroits indiquées en feuille "Indemnités"

J'ai ce code
Sub ecriture()
raz
critère = Sheets("Salariés").Range("D21")
With Sheets("CCN")
Set r = .Columns(1).Find(critère)
n = 0
While Not r Is Nothing

Call remplir(r, n)
n = n + 1
Set r = r.Offset(1, 0).FindNext
Wend
End With
End Sub

Sub remplir(r, n)
With Sheets("Indemnités")
lg1 = r.Parent.Cells(1, 2)
lg2 = r.Parent.Cells(1, 3)
lg3 = r.Parent.Cells(1, 4)
'MsgBox r.Row
.Range(lg1).Offset(n, 0) = r.Offset(0, 1)
.Range(lg2).Offset(n, 0) = r.Offset(0, 2)
'MsgBox r.Offset(, 3)
If r.Offset(0, 3) <> "" Then phrase = Right(r.Offset(0, 3), Len(r.Offset(0, 3)) - 1) Else phrase = ""
.Range(lg3).Offset(n, 0).FormulaLocal = phrase
End With
End Sub

Sub raz()
With Sheets("Indemnités")
.Range("A51:A58") = ""
.Range("A59:A66") = ""
.Range("D59:D66") = ""
End With
End Sub
J'aimerais rajouter une chose dans ce code :
Lorsqu'en colonne B de la feuille CCN la phrase commence par Maxi...... alors cette formule en colonne D s'affichera en ligne 66 de la feuille Indemnité

Quelqu'un aurait il une idée ?

Merci

Bonjour,

Si j'ai bien compris la demande ...

Un essai ...

Sub remplir(r, n)
   With Sheets("Indemnités")
      lg1 = r.Parent.Cells(1, 2)
      lg2 = r.Parent.Cells(1, 3)
      lg3 = r.Parent.Cells(1, 4)
      'MsgBox r.Row
      .Range(lg1).Offset(n, 0) = r.Offset(0, 1)
      .Range(lg2).Offset(n, 0) = r.Offset(0, 2)
      'MsgBox r.Offset(, 3)
      If r.Offset(0, 3) <> "" Then phrase = Right(r.Offset(0, 3), Len(r.Offset(0, 3)) - 1) Else phrase = ""
      If Left(r.Offset(0, 1), 4) = "Maxi" Then             ' << ajout
         .Range("D66").FormulaLocal = phrase               ' << ajout
      Else                                                 ' << ajout
         .Range(lg3).Offset(n, 0).FormulaLocal = phrase    ' << ajout
      End If                                               ' << ajout
   End With
End Sub

ric

Bonjour

Merci

Aprés vérification, la formule correspondant à Maxi se met bien ligne 66 colonne D mais le libellé reste en A62 alors qu'il devrait être en A66

Bonjour,

Un essai ...

Remplacer "remplir(r, nI)" par celle-ci ...

Sub remplir(r, n)

   With Sheets("Indemnités")
      lg1 = r.Parent.Cells(1, 2)
      lg2 = r.Parent.Cells(1, 3)
      lg3 = r.Parent.Cells(1, 4)
      .Range(lg1).Offset(n, 0) = r.Offset(0, 1)
      If r.Offset(0, 3) <> "" Then phrase = Right(r.Offset(0, 3), Len(r.Offset(0, 3)) - 1) Else phrase = ""

      If Left(r.Offset(0, 1), 4) = "Maxi" Then
      .Range("A66") = r.Offset(0, 2)
         .Range("D66").FormulaLocal = phrase
      Else
      .Range(lg2).Offset(n, 0) = r.Offset(0, 2)
         .Range(lg3).Offset(n, 0).FormulaLocal = phrase
      End If
   End With
End Sub

ric

Merci beaucoup

Rechercher des sujets similaires à "formule donnees"