A voir également:
- Excel macro selection de cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Aller à la ligne dans une cellule excel - Guide
3 réponses
Utilisateur anonyme
Modifié par AGi67.fr le 18/11/2010 à 10:49
Modifié par AGi67.fr le 18/11/2010 à 10:49
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
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
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
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
Utilisateur anonyme
Modifié par moska le 11/01/2011 à 16:23
Modifié par moska le 11/01/2011 à 16:23
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.
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.