Recherche à partir de caractères extraits à gauche d'une chaine

bonjour le forum,

je me tourne vers vous car je cale sur ceci depuis plusieurs heures.

dans l'exemple (joint) je cherche à écrire en colonne N de la feuille Mouvements, la lettre "A" si ce qui se trouve en colonne Q de la planning commence par A sinon j'écris "P", à condition que les 7 premiers caractères en colonne J de la feuille Mouvements soient des chiffres et que ces 7 mêmes chiffres se retrouvent en colonne I de la feuille Planning.

j'ai écrit le code ci-dessous mais je tourne en rond et j'avance pas, merci de m'aider svp.

Private Sub CommandButton1_Click()
Dim Bl, Ligne, TypeCgt, i%
For i = 2 To 100
If IsNumeric(Left(Sheets("Mouvements").Range("J" & i), 7)) Then
Bl = Left(Sheets("Mouvements").Range("J" & i), 7).Value
Ligne = Sheets("Mouvements").Range("J" & i)
End If

       For j = 2 To 100

        If Left(Sheets("Planning").Range("J" & j), 1) = "A" Then
        TypeCgt = "A"
        Else: TypeCgt = "P"
        End If

        If Sheets("Planning").Range("J" & j).Value = Bl Then Sheets("Mouvements").Range("N" & Ligne) = TypeCgt
      Next j
      Next i
End Sub

Pedro.

11classeur1.xlsm (21.03 Ko)

Bonjour Dudesson,

Voici une procédure et une fonction à utiliser pour ce que vous souhaitez

Option Explicit

Private Sub Mouvements()
  Dim dLig As Long, Lig As Long, LigF As Long
  ' Avec la feuille mouvement
  With Sheets("Mouvements")
    ' Dernière ligne
    dLig = .Range("J" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 2 To dLig
      ' Vérifier si valeur numérique, sinon passer à la ligne suivante
      If Not IsNumeric(Left(.Range("J" & Lig), 7)) Then GoTo SuiteLig
      ' La valeur dans Planning commence t'elle par A
      If CommenceParA(Left(.Range("J" & Lig), 7)) Then
        .Range("N" & Lig).Value = "A"
      Else
        .Range("N" & Lig).Value = "P"
      End If

SuiteLig:
      Next Lig
    End With
End Sub

Function CommenceParA(ValCherchée As Variant) As Boolean
  Dim LigFind As Long
  LigFind = 0: CommenceParA = False
  ' En cas d'erreur on continue
  On Error Resume Next
  ' Chercher la ligne contenant la valeur
  With Sheets("Planning")
    LigFind = .Range("I:I").Find(What:=ValCherchée, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False).Row
    If LigFind > 0 Then
      CommenceParA = UCase(Left(.Range("Q" & LigFind), 1)) = "A"
    End If
  End With
  On Error GoTo 0
End Function

@+

bonjour BrunoM45,

bonjour le forum,

c'est parfait, c'est exactement ce que je cherchais.

merci à vous.

bon dimanche

Pedro.

Rechercher des sujets similaires à "recherche partir caracteres extraits gauche chaine"