Copie des certains elements Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
j
jose1987
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 12 septembre 2018
Version d'Excel : 2013

Message par jose1987 » 14 septembre 2018, 11:22

Bonjour,

Je voudrais faire une petite modification à ma macro.
En effet, je voudrais que si le numéro SIRET qui commence par un chiffre puisse copier que les 9 premiers chiffres dans la cellule à côté. (C’est ce que la macro peut faire actuellement).
Mais, en plus, je voudrais que si le SIRET commence par E, que la macro copie la cellule toute entière.
(voir fichier ci-joint)
Merci d’avance
exemple separer.xlsm
(17.25 Kio) Téléchargé 11 fois
Avatar du membre
Pedro22
Membre impliqué
Membre impliqué
Messages : 2'409
Appréciations reçues : 244
Inscrit le : 26 janvier 2017
Version d'Excel : 2010

Message par Pedro22 » 14 septembre 2018, 11:27

Bonjour,

Il suffit d'ajouter une simple condition à ta macro :
Sub test()

Dim i As Integer, dl As Integer

dl = Range("A" & Rows.Count).End(xlUp).Row

   For i = 2 To dl
     If Left(Range("A" & i), 1) = "E" Then
        Range("C" & i) = Range("A" & i)
     Else
        Range("C" & i) = Left(Range("A" & i), 9)
     End If
   Next i

End Sub
Le problème n'est pas de ne pas savoir, le problème est de ne pas chercher...
Ton problème est résolu ? N'oublie pas de l'indiquer :
Avatar du membre
paritec
Passionné d'Excel
Passionné d'Excel
Messages : 3'783
Appréciations reçues : 376
Inscrit le : 7 juin 2011
Version d'Excel : W10 - 2003 FR - 2010 FR

Message par paritec » 14 septembre 2018, 11:29

Bonjour
Sub test()
    Dim i As Integer, dl As Integer
    dl = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To dl
        If Range("A" & i) Like "E*" Then
            Range("C" & i) = Range("A" & i)
        Else
            Range("C" & i) = Left(Range("A" & i), 9)
        End If
    Next i
End Sub
a+
Papou :)
Des bonnes explications et des petits fichiers représentatifs vont nous aider à vous aider !!!!
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'698
Appréciations reçues : 646
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 14 septembre 2018, 19:11

Bonsoir José, le forum,

je te retourne ton fichier modifié :
exemple separer.xlsm
(15 Kio) Téléchargé 7 fois
dhany
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'378
Appréciations reçues : 233
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 14 septembre 2018, 19:28

bonjour

salut dhany

sans VBA
juste une formule simple
Copie de exemple separer.xlsm
(17.74 Kio) Téléchargé 3 fois
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
j
jose1987
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 12 septembre 2018
Version d'Excel : 2013

Message par jose1987 » 14 septembre 2018, 20:19

Bonjour,
Merci beaucoup, mais j'aurai vraiment besoin d'une macro.
Merci d'avance
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'698
Appréciations reçues : 646
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 14 septembre 2018, 20:20

??? dans mon fichier joint, y'a bien une macro ! regarde le module de Feuil1 !

le code VBA est celui-ci :
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim chn$, lng%
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 1 Then Exit Sub
    If .Row = 1 Then Exit Sub
    If Left$(.Value, 1) = "E" Then
      chn = .Value
    Else
      lng = Len(.Value)
      If lng >= 9 Then chn = Left$(.Value, 9)
    End If
    .Offset(, 2) = chn
  End With
End Sub
dhany
j
jose1987
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 12 septembre 2018
Version d'Excel : 2013

Message par jose1987 » 16 septembre 2018, 15:51

Bonjour,
Je voudrais rajouter une exception, c'est lorsque le numéro SIRET commence par 0, donc dans ce cas il faudrait prendre en compte que les 9 premiers numéros et pas le 0. Ex:
Soit le 0789456123, cela devrait copier que 789456123.
Merci d'avance

Le code actuel est le suivant:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, lng%
With Target
If .CountLarge > 1 Then Exit Sub
If .Column <> 1 Then Exit Sub
If .Row = 1 Then Exit Sub
If Left$(.Value, 1) = "E" Then
chn = .Value
Else
lng = Len(.Value)
If lng >= 9 Then chn = Left$(.Value, 9)
End If
.Offset(, 2) = chn
End With
End Sub
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'698
Appréciations reçues : 646
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 16 septembre 2018, 16:49

Bonjour José,

voici la nouvelle version :
exemple separer.xlsm
(15.5 Kio) Téléchargé 5 fois
merci de me donner ton avis.  :wink:

dhany
j
jose1987
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 12 septembre 2018
Version d'Excel : 2013

Message par jose1987 » 16 septembre 2018, 19:17

Bonjour,
Merci beaucoup pour votre aide.
Serait-il possible de rajouter cette modif au fichier ci-joint? (dans l'excel que vous avez mis, je ne vois pas le code...)

Cordialement,
exemple separer.xlsm
(17.25 Kio) Téléchargé 4 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message