Selection de ligne
sam
-
sam -
sam -
Bonjour,
Je dispose d'un fichier excel dont les lignes en A sont identiques en lot ( on va avoir par ex, 122 lignes avec "client1", 146 lignes avec "client2" etc)
J'aimerai savoir comment faire pour sélectionner les lignes identiques entre elles pour les ranger dans des tableaux différents..
Merci pour vos réponse
Je dispose d'un fichier excel dont les lignes en A sont identiques en lot ( on va avoir par ex, 122 lignes avec "client1", 146 lignes avec "client2" etc)
J'aimerai savoir comment faire pour sélectionner les lignes identiques entre elles pour les ranger dans des tableaux différents..
Merci pour vos réponse
A voir également:
- Selection de ligne
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
- Apparaitre hors ligne instagram - Guide
- Aller à la ligne excel - Guide
5 réponses
Bonjour,
Manuellement avec :
- un tri par la colonne A
- un filtre sur cette colonne
- des copié/collé.
Manuellement avec :
- un tri par la colonne A
- un filtre sur cette colonne
- des copié/collé.
Le tri peut être fait manuellement une seule fois.
Après ne reste plus qu'à automatiser les copié/collé.
Tu as, par contre, 3000 clients? comportant chacun entre 100 et 150 lignes?
Après ne reste plus qu'à automatiser les copié/collé.
Tu as, par contre, 3000 clients? comportant chacun entre 100 et 150 lignes?
Bonjour,
Quelques infos complémentaires pour ne pas que tu aies trop de choses à adapter :
- nom de la feuille contenant tes données,
- Dans qu'elles colonnes sont situées les données à copier-coller,
- Les noms des machines sont dans qu'elle colonne?
- y a t'il une ligne d'entête? Si oui, laquelle? 1ère ligne? autre?
🎼 Cordialement,
Franck 🎶
Quelques infos complémentaires pour ne pas que tu aies trop de choses à adapter :
- nom de la feuille contenant tes données,
- Dans qu'elles colonnes sont situées les données à copier-coller,
- Les noms des machines sont dans qu'elle colonne?
- y a t'il une ligne d'entête? Si oui, laquelle? 1ère ligne? autre?
🎼 Cordialement,
Franck 🎶
Bon...
Voici un premier jet.
A adapter, les deux constantes déclarées dans l'entête du module.
Il s'agit de tes entêtes de colonne...
Il peut y avoir un souci au niveau du format de tes données dans les feuilles créées. Notamment tu parlais de temps de fabrication. Il faudra voir ça après essai de cette macro.
Essaye là donc sur une copie de ton classeur, pas sur l'original...
J'ai également pré-supposé que tu as préalablement trié tes données...
Reviens nous dire ce qu'il en est ainsi que le temps d'exécution...
A insérer dans un module standard et lancer par ALT+F8
Voici un premier jet.
A adapter, les deux constantes déclarées dans l'entête du module.
Il s'agit de tes entêtes de colonne...
Il peut y avoir un souci au niveau du format de tes données dans les feuilles créées. Notamment tu parlais de temps de fabrication. Il faudra voir ça après essai de cette macro.
Essaye là donc sur une copie de ton classeur, pas sur l'original...
J'ai également pré-supposé que tu as préalablement trié tes données...
Reviens nous dire ce qu'il en est ainsi que le temps d'exécution...
A insérer dans un module standard et lancer par ALT+F8
Option Explicit
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* A ADAPTER
Const ENTETE_A$ = "Machine" 'entête colonne A
Const ENTETE_B$ = "Temps de Fab" 'entête colonne B
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Sub Creation_Feuilles_Machine()
Dim wshSheet As Worksheet
Dim Plage As Range, DL&, L&, Cpt&
Dim Tb_In, Dico As Object
Dim t As Double
t = Timer
Set Dico = CreateObject("Scripting.Dictionary")
With Worksheets("procede_etape")
DL = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Set Plage = .Range("A2:B" & DL)
End With
Tb_In = Plage
Application.ScreenUpdating = False
For L = LBound(Tb_In, 1) To UBound(Tb_In, 1)
If Not Dico.Exists(Tb_In(L, 1)) Then
Dico(Tb_In(L, 1)) = ""
Set wshSheet = Add_Feuil(Replace(Tb_In(L, 1), "*", ""))
With wshSheet
.Range("A1") = ENTETE_A
.Range("B1") = ENTETE_B
End With
Cpt = 1
End If
Cpt = Cpt + 1
With wshSheet
.Range("A" & Cpt) = Tb_In(L, 1)
.Range("B" & Cpt) = Tb_In(L, 2)
End With
Next L
MsgBox Timer - t & " secondes"
End Sub
Function Add_Feuil(NF$) As Worksheet
Dim Feuil_Exist As Boolean
With ThisWorkbook
On Error Resume Next
Feuil_Exist = (.Worksheets(NF).Name = NF)
On Error GoTo 0
If Feuil_Exist = False Then
.Worksheets.Add After:=.Worksheets(.Worksheets.Count)
ActiveSheet.Name = NF
End If
Set Add_Feuil = .Worksheets(NF)
End With
End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour, lorsque je le lance, voici l'erreur qu'il me met :" le nom de feuille est non valide" pour la ligne : ActiveSheet.Name = NF.
J'ai essayé de le modifier mais cela ne change rien
J'ai essayé de le modifier mais cela ne change rien
Cela peut être du à d'autres caractères indésirables...
Essaye ce code et dit moi ce qui s'affiche avant le plantage :
Essaye ce code et dit moi ce qui s'affiche avant le plantage :
Option Explicit
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* A ADAPTER
Const ENTETE_A$ = "Machine" 'entête colonne A
Const ENTETE_B$ = "Temps de Fab" 'entête colonne B
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Sub Creation_Feuilles_Machine()
Dim wshSheet As Worksheet
Dim Plage As Range, DL&, L&, Cpt&
Dim Tb_In, Dico As Object
Dim t As Double
t = Timer
Set Dico = CreateObject("Scripting.Dictionary")
With Worksheets("procede_etape")
DL = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Set Plage = .Range("A2:B" & DL)
End With
Tb_In = Plage
Application.ScreenUpdating = False
For L = LBound(Tb_In, 1) To UBound(Tb_In, 1)
If Not Dico.Exists(Tb_In(L, 1)) Then
Dico(Tb_In(L, 1)) = ""
Set wshSheet = Add_Feuil(Replace(Tb_In(L, 1), "*", ""))
With wshSheet
.Range("A1") = ENTETE_A
.Range("B1") = ENTETE_B
End With
Cpt = 1
End If
Cpt = Cpt + 1
With wshSheet
.Range("A" & Cpt) = Tb_In(L, 1)
.Range("B" & Cpt) = Tb_In(L, 2)
End With
Next L
MsgBox Timer - t & " secondes"
End Sub
Function Add_Feuil(NF$) As Worksheet
Dim Feuil_Exist As Boolean
With ThisWorkbook
On Error Resume Next
Feuil_Exist = (.Worksheets(NF).Name = NF)
On Error GoTo 0
If Feuil_Exist = False Then
.Worksheets.Add After:=.Worksheets(.Worksheets.Count)
MsgBox NF
ActiveSheet.Name = NF
End If
Set Add_Feuil = .Worksheets(NF)
End With
End Function
Non, c'est le caractère spécial " qui pose souci...
Essaye ceci :
Essaye ceci :
Option Explicit
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* A ADAPTER
Const ENTETE_A$ = "Machine" 'entête colonne A
Const ENTETE_B$ = "Temps de Fab" 'entête colonne B
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Sub Creation_Feuilles_Machine()
Dim wshSheet As Worksheet, strNF$
Dim Plage As Range, DL&, L&, Cpt&
Dim Tb_In, Dico As Object
Dim t As Double
t = Timer
Set Dico = CreateObject("Scripting.Dictionary")
With Worksheets("procede_etape")
DL = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Set Plage = .Range("A2:B" & DL)
End With
Tb_In = Plage
Application.ScreenUpdating = False
For L = LBound(Tb_In, 1) To UBound(Tb_In, 1)
If Not Dico.Exists(Tb_In(L, 1)) Then
Dico(Tb_In(L, 1)) = ""
strNF = Replace(Replace(Tb_In(L, 1), "*", ""), """", "")
Set wshSheet = Add_Feuil(strNF)
With wshSheet
.Range("A1") = ENTETE_A
.Range("B1") = ENTETE_B
End With
Cpt = 1
End If
Cpt = Cpt + 1
With wshSheet
.Range("A" & Cpt) = Tb_In(L, 1)
.Range("B" & Cpt) = Tb_In(L, 2)
End With
Next L
MsgBox Timer - t & " secondes"
End Sub
Function Add_Feuil(NF$) As Worksheet
Dim Feuil_Exist As Boolean
With ThisWorkbook
On Error Resume Next
Feuil_Exist = (.Worksheets(NF).Name = NF)
On Error GoTo 0
If Feuil_Exist = False Then
.Worksheets.Add After:=.Worksheets(.Worksheets.Count)
MsgBox NF
ActiveSheet.Name = NF
End If
Set Add_Feuil = .Worksheets(NF)
End With
End Function
N'y a t-il pas un moyen de le faire automatiquement ? J'ai plus de 3000 blocs de lignes identiques