A voir également:
- Selection de ligne
- Apparaitre hors ligne whatsapp - Guide
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Site de vente en ligne particulier - Guide
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
18 juin 2015 à 10:12
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é.
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
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?
Après ne reste plus qu'à automatiser les copié/collé.
Tu as, par contre, 3000 clients? comportant chacun entre 100 et 150 lignes?
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
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é.
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é.
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
18 juin 2015 à 12:10
Et tes résultats, tu les veux ou?
Dans 82 nouvelles feuilles?
Dans 82 nouveaux classeurs?
Autre?
Dans 82 nouvelles feuilles?
Dans 82 nouveaux classeurs?
Autre?
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
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 🎶
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 🎶
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
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?
Tes noms de machine comportent ils des caractères spéciaux?
Si oui, lesquels?
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
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?
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
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
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
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
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 :
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
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
Modifié par pijaku le 19/06/2015 à 14:50
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
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
19 juin 2015 à 14:58
Quel est le nom EXACT de la machine : *D.LAB.000NN.MACHINELABO_OUI_ZONETAKD.3C
18 juin 2015 à 11:22
N'y a t-il pas un moyen de le faire automatiquement ? J'ai plus de 3000 blocs de lignes identiques