Excel macro selection de cellules

Fermé
waooooooo - 17 nov. 2010 à 22:13
 Utilisateur anonyme - 18 nov. 2010 à 11:28
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

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
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
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