Copie premiers caractères cellule Vb

pgillou Messages postés 53 Statut Membre -  
lucas06150 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour le forum,

Petite question en cette fin de semaine en espérant que vous pourrez m'aider.Je cherche à copier les 4 premiers caractères d'une cellule si ça valeur répond à une condition.Voici le code sur lequel je travail sans succès jusqu'ici.

Sub test()

Dim Lig As Long
Dim Col As String
Dim Col1 As String

Dim NbrLig As Long
Dim NumLig As Long

Sheets("Feuil1").Activate
NumLig = 0
Col = "B"
' colonne de la donnée non vide à tester

NumLig = 0
With Sheets("Feuil1") ' feuille source
NbrLig = .Cells(5000, Col).End(xlUp).Row
For Lig = 1 To NbrLig

If .Cells(Lig, Col).Value Like "RA*" Then "valeur a cherché dans colonne B
.Cells(Lig, Col),Copy 'Copie de la cellule
NumLig = NumLig + 1
Cells(NumLig , 1).Select
ActiveSheet.Paste
End If

Next
End With

End Sub

Merci de votre aide et bonne journnée!

7 réponses

  1. lucas06150 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   11
     
    Salut,

    Pour récupérer les 4 premiers caractères d'une chaîne il me semble que c'est
    Left(TaChaine,4)
    1
  2. pgillou Messages postés 53 Statut Membre 1
     
    Salut,
    Ecoute j'ai deja essayé cette fonction je n'arrive pas à l'adapter.
    J'ai essayé de mofié la ligne suivante:

    .Cells(Lig, Col),Copy

    par

    .Left(Cells(Lig,Col).Value,4)

    Le code bloque dessus.

    Une idée?

    Merci de ton aide
    0
  3. lucas06150 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   11
     
    C'est normal Left() n'est pas une méthode de l'objet Sheet

    Essai ca en dehors du With :

    Left(Sheet("Feuil1").Cells(Lig,Col).Value,4)

    ou

    Left(Sheet("Feuil1").Range(Col & Lig).Value,4)
    0
  4. pgillou Messages postés 53 Statut Membre 1
     
    Re,

    Pas de changement j'ai un message comme quoi un égal et attendu avec les deux méthodes.

    Après je vais peut étre vois pour supprimer les caactéres dont je n'ai pas besoin .
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Essaie de faire ça:

    If InStr(1,.Cells(Lig, Col).Value, "RA" ) <> 0 Then "valeur a cherché dans colonne B
         NumLig = NumLig + 1
         .Cells(NumLig , 1) = Left(.Cells(Lig,Col).Value,4)
    End If 


    ;o)
    0
  7. pgillou Messages postés 53 Statut Membre 1
     
    Apres adaptation voici le code final:
    Sub Macro2()

    Dim Col As String
    Dim Col1 As String

    Dim NbrLig As Long
    Dim NumLig As Long

    Sheets("carnet dep a").Activate
    NumLig = 0
    Col = "B" ' colonne de la donnée non vide à tester

    NumLig = 0
    With Sheets("carnet dep a") ' feuille source
    NbrLig = .Cells(5000, Col).End(xlUp).Row
    For Lig = 1 To NbrLig

    If .Cells(Lig, Col).Value Like "RA*" Then

    .Cells(Lig, 1) = Left(.Cells(Lig, Col).Value, 6)

    End If

    Next

    End With
    End Sub

    Je ne suis pas arrivée à faire marché la fonction InStr mais la fonction Left ma permis de faire ce que je voulais.

    Merci à vous deux!
    0
  8. lucas06150 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   11
     
    De rien !
    0