Selection de ligne

Fermé
sam - 18 juin 2015 à 10:11
 sam - 20 juin 2015 à 09:49
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



5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712
18 juin 2015 à 10:12
Bonjour,

Manuellement avec :
- un tri par la colonne A
- un filtre sur cette colonne
- des copié/collé.
0
Merci
N'y a t-il pas un moyen de le faire automatiquement ? J'ai plus de 3000 blocs de lignes identiques
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712
18 juin 2015 à 11:28
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?
0
Non les clients c'était pour donner un exemple, pour moi il s'agit de machine et de temps de fab. Mais quand j'automatiserais les copier coller, comment faire en sorte qu'il reconnaisse quand je passe à un autre nom de machine ?
Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > sam
18 juin 2015 à 11:49
Peu importe...
Client, machine, pépitos ou cafés, on s'en fiche.
J'ai besoin d'en connaitre le nombre. Ainsi que le nombre moyen approximatif de lignes par machine. Ainsi que le nombre de colonnes à copié-collé.
0
Après 1er tri, il me reste 82 lots de machines avec des lignes variant de 200 a parfois 2000 selon le lots, c'est très disparate. Et j'ai 3 colonnes a copier coller
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > sam
18 juin 2015 à 12:10
Et tes résultats, tu les veux ou?
Dans 82 nouvelles feuilles?
Dans 82 nouveaux classeurs?
Autre?
0
Dans 82 nouvelles feuilles dans l'idéal
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712
Modifié par pijaku le 19/06/2015 à 07:41
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 🎶
0
Bonjour,
le nom de la feuille est "procede_etape"
il s'agit des colonnes A et B à copier
Le nom des machines sont dans la colonne A et il y a une ligne d'entête, la 1ère.
Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > sam
19 juin 2015 à 09:42
Et une dernière question (promis après je m'y met...) :
Tes noms de machine comportent ils des caractères spéciaux?
Si oui, lesquels?
0
:) alors oui, il y a un * a chaque début de nom et un _. Il y a aussi des points..
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > sam
19 juin 2015 à 10:07
le signe * devra être remplacé ou supprimé dans le nom des feuilles. Ta préférence? Suppression ou remplacement? Si remplacement, par quoi?
0
Suppression c'est niquel :)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712
19 juin 2015 à 11:39
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
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

0

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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712
19 juin 2015 à 14:24
Cela peut être du à d'autres caractères indésirables...
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
0
Il m'ouvre une fenêtre microsoft excel avec juste écrit : *D.LAB.000NN.MACHINELABO_OUI_ZONETAKD.3C"
ceci est le nom de ma machine dans la base de donnée. Peut-être que le nom est trop long ? Car pour tester j'ai modifié à la main le nom d'une machine et ça a marché
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > sam
Modifié par pijaku le 19/06/2015 à 14:50
Non, c'est le caractère spécial " qui pose souci...
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
0
Oups le caractère " s'est glissé par mégarde. Il n'y en a pas dans le nom de la machine. J'ai cependant relancé le code et il y a le même message
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 2 712 > sam
19 juin 2015 à 14:58
Quel est le nom EXACT de la machine : *D.LAB.000NN.MACHINELABO_OUI_ZONETAKD.3C
0