Excel macro selection de cellules

waooooooo -  
 Utilisateur anonyme -
Bonjour,

J'ai un fichier client dans lequel le nom des clients est inscrit un première cellule ainsi que plusieurs informations dans la ligne concernée.
Mon but est de faire des onglets avec les informations du client.
Ce que je voudrais savoir c'est si il y a une macro capable de faire une comparaison entre les noms des clients, me créer un onglet pour chaque clients et me coupe et copie la ligne entière d'information !!

Attention !
un nom de client peut être mentionné plusieurs fois ce qui m'amène à demander si la macro est capable de sélectionner les lignes du même client en faisant une comparaison sur les noms de ces derniers ?

J'espère que vous pourrais m'aider

Ben

3 réponses

  1. Utilisateur anonyme
     
    Cette macro devrait convenir ( à adapter par rapport à ton fichier client):
    Copier ce programme dans macro d'Excel avec les commentaires

    Sub Fileclients()
    Dim NomClient, Data1, Data2, Data3, Data4 As String
    Dim Lig, i, compt, NbOnglet As Integer: Lig = 3 ' la valeur 3 correspond à la position du premier client case B3
    Dim Onglet As Boolean: Onglet = False

    ' Pour que cette macro fonctionne, il faut:
    ' - Créer dans la feuille client une colonna A ou ailleurs, dans ce cas il faudra changer les données de la macro.
    ' La colonne A donnera l'information si les données ont été déjà traitées.
    ' - La feuille principale l'onglet s'appelle "Clients"
    Sheets("Clients").Select 'sélection feuille client

    ' aller à la cellule du premier client. Pour l'exemple cellule B3
    ' les noms clients doivent être dans la colonne B
    Cells(3, 2).Select 'sélection du premier client en B3

    ' EXPLICATION de la boucle Do
    ' Elle va permettre de parcourir le fichier du premier au dernier client jusqu'à une valeur vide.
    ' ce qui implique que le nom des clients doivent être obligatoirement présent et aucune ligne vide entre les clients.
    '
    ' La colonne A permettra de savoir si l'information de ce client a été traitée.
    ' Si l'information du client a été traitées, on trouvera le mot OK.
    ' OK sera placé automatiquement par la macro
    '
    ' ==> Si Nom d'un client, le programme regarde si la colonne A contient le mot OK
    ' Si OK est vrai implique information déjà traitée
    ' Si OK est faux information à traiter. On copie les informations du client dans des variables
    '
    ' Regarder si l'onglet de ce client existe.
    ' Onglet absent implique créer onglet
    '
    ' Ouvrir feuille existante ou la nouvelle feuille créée.
    ' Sur cette feuille on met dans la colonne A le numéro de l'information et on copie (variables) sur la ligne les informations du client.
    '

    Do Until Cells(Lig, 2) = "" ' parcours colonne B feuille clients
    NomClient = Cells(Lig, 2)
    If Left(Cells(Lig, 1), 2) <> "OK" Then

    Data1 = Cells(Lig, 3) 'information client colonne C
    Data2 = Cells(Lig, 4) 'information client colonne D
    Data3 = Cells(Lig, 5) 'information client colonne E
    Data4 = Cells(Lig, 6) 'information client colonne F
    ' ETC.

    NbOnglet = Sheets.Count 'récupérer le nombre d'onglets
    For i = 2 To NbOnglet
    If NomClient = Sheets(i).Name Then
    Onglet = True
    End If
    Next i
    'onglet faux ==> créer onglet
    If Onglet = False Then
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = NomClient
    End If
    ' Sur la nouvelle feuille client ou une ancienne parcourir la colonne A pour placer l'information
    compt = 1
    Sheets(NomClient).Select
    Do Until Cells(compt, 1) = "" 'compter les lignes pour placer information
    compt = compt + 1
    Loop
    Cells(compt, 1) = compt
    Cells(compt, 3) = Data1 ' copier les données dans les cellules
    Cells(compt, 4) = Data2
    Cells(compt, 5) = Data3
    Cells(compt, 6) = Data4
    Sheets("Clients").Select
    Cells(Lig, 1) = "OK info" & compt 'On met devant le client combien d'informations il possède
    End If

    Lig = Lig + 1
    Onglet = False
    Cells(Lig, 2).Select
    Loop
    End Sub

    Bon courage
    Agi67
    0
  2. waooooooo
     
    Bonjour,

    Je suis d'accord avec vous sur l'ensemble de votre proposition !
    J'ai déjà codé tout ce qui traite de la création des onglets et de la mise en page, tout ce qui me faut c'est une macro qui me compare les noms des clients et me sélectionne les ligne associées à ce clients

    Par exemple avec le fichier suivant :

    Nom Vehicule
    Paul fiat
    Paul fiat
    Pierre toyota
    jean audi
    jean audi
    jean audi
    Paul fiat
    Pierre toyota

    Il me faut un onglet par client!

    Merci de votre attention et de cette première macro qui m'aide beaucoup

    cordialement

    ben
    0
  3. Utilisateur anonyme
     
    Salut waooooo

    La macro que je t'ai envoyé créée des onglets par rapport aux clients.
    Si l'onglet client est déjà créé, elle ne le refait pas mais rajoute uniquement les nouvelles informations.
    Elle ne propose qu'un onglet par client.

    Pour exemple:
    - Fichier excel vierge
    - Une seule feuille "Clients" dans cette feuille mettre les données suivantes:

    colonne A vide

    A B C D E
    Pierre infoP1 infoP1 infoP1
    Quentin infoP2 infoP2 infoP2
    Paul infoP3 infoP3 infoP3
    Paul infoP4 infoP4 infoP4
    Quentin infoP5 infoP5 infoP5

    Elle crée un onglet par client et met à chaque client ses infos.

    Sinon je n'ai pas très bien compris la problématique.
    0