liste de nom pour variable
Le
excel
bonjour a tous
j'ai une question peut etre bete mais qui a une certaine importance pour moi
j'ai un fichier avec deux feuilles une contient la liste de mes techniciens
la deuxieme la liste des pièces qui leur sont affectes
j ai creer une macro qui d'apres la premiere feuille retrouve le nom du tech
me cree une feuille a son nom et me copie l'ensemble des pieces qui lui sont
affectés
voici ma ma macro
Sub test()
Dim i As Integer
Dim n, h As Integer
Dim nv As String
Sheets("export").Select
'Selection.Copy
' Workbooks.Add
'ActiveSheet.Paste
'Sheets("technicien").Select
For h = 2 To 47
nv = Sheets("technicien").Cells(h, 1).Value
Rows(1).Select
Selection.Copy
On Error Resume Next
Worksheets(nv).Select
If Err <> 0 Then Worksheets.Add.Name = nv
Rows(1).Select
ActiveSheet.Paste
Sheets("export").Select
For i = 1 To 1200
'MsgBox nv
If Cells(i, 5).Value = nv Then
Rows(i).Select
Selection.Copy
Sheets(nv).Select
For n = 2 To 100
If Cells(n, 1).Value = "" Then
Rows(n).Select
Exit For
End If
Next n
ActiveSheet.Paste
Sheets("export").Select
End If
Next i
Cells(1, 1).Select
Next h
End Sub
maintenant je voudrais savoir s'il etait possible de mettre en dure dans ma
macro la liste de mes techniciens plutot que de l'appeler par une feuille
car c'est par rapport à des fichiers d'import et d'export qui sont
susceptibles d'évoluer d'un jour à l'autre a lors que ma liste de
techniciens est figé.du style
nvf = "AVIGNON"
nvf = "BARCZIK Christophe"
nvf = "BENSAHCOUN André"
nvf = "BISIAU Florent"
nvf = "BORDEAUX"
ou nvf est le nom de mon tech
j'espere avoir été assez clair.
merci de vos lumières et ce forum est vraiment une source d'inspiration
génial
ps: peut retrouver le mot de passe d'uen macro en xla perdu
j'ai une question peut etre bete mais qui a une certaine importance pour moi
j'ai un fichier avec deux feuilles une contient la liste de mes techniciens
la deuxieme la liste des pièces qui leur sont affectes
j ai creer une macro qui d'apres la premiere feuille retrouve le nom du tech
me cree une feuille a son nom et me copie l'ensemble des pieces qui lui sont
affectés
voici ma ma macro
Sub test()
Dim i As Integer
Dim n, h As Integer
Dim nv As String
Sheets("export").Select
'Selection.Copy
' Workbooks.Add
'ActiveSheet.Paste
'Sheets("technicien").Select
For h = 2 To 47
nv = Sheets("technicien").Cells(h, 1).Value
Rows(1).Select
Selection.Copy
On Error Resume Next
Worksheets(nv).Select
If Err <> 0 Then Worksheets.Add.Name = nv
Rows(1).Select
ActiveSheet.Paste
Sheets("export").Select
For i = 1 To 1200
'MsgBox nv
If Cells(i, 5).Value = nv Then
Rows(i).Select
Selection.Copy
Sheets(nv).Select
For n = 2 To 100
If Cells(n, 1).Value = "" Then
Rows(n).Select
Exit For
End If
Next n
ActiveSheet.Paste
Sheets("export").Select
End If
Next i
Cells(1, 1).Select
Next h
End Sub
maintenant je voudrais savoir s'il etait possible de mettre en dure dans ma
macro la liste de mes techniciens plutot que de l'appeler par une feuille
car c'est par rapport à des fichiers d'import et d'export qui sont
susceptibles d'évoluer d'un jour à l'autre a lors que ma liste de
techniciens est figé.du style
nvf = "AVIGNON"
nvf = "BARCZIK Christophe"
nvf = "BENSAHCOUN André"
nvf = "BISIAU Florent"
nvf = "BORDEAUX"
ou nvf est le nom de mon tech
j'espere avoir été assez clair.
merci de vos lumières et ce forum est vraiment une source d'inspiration
génial
ps: peut retrouver le mot de passe d'uen macro en xla perdu

Poser une question


aussi comme j'ai compris que les noms sont en colonne E de export, il suffit
de faire avec...
incorporer les noms dans la macro n'est pas une bonne methode.
Test ceci
Youky
Sub test()
Dim bas, der,lig As Integer
Dim tst
Dim onglet As String
Sheets("export").Select
bas = [A65000].End(xlUp).Row
'le nom de l'onglet en colonne E (soit 5)
For lig = 1 To bas
onglet = Sheets("export").Cells(lig, 5)
On Error Resume Next
der = Sheets(onglet).[A65000].End(xlUp).Row + 1
If Err = 9 Then
Worksheets.Add.Name = Sheets("export").Range("E" & lig).Value
Err.Clear: Sheets("export").Select
End If
If Sheets(onglet).[A1] = "" Then der = 1
'K est la colonne de fin à modifier en conséquence
Sheets("export").Range("A" & lig & ":K" & lig).Copy _
Destination:=Sheets(onglet).Range("A" & der & ":K" & der)
Next
End Sub
super simple et tres fonctionnel
je passe de 17seconde à 6 seconde franchement trop impressionnant
je ne pensais pas qu'on pouvais simplifier autant
par contre quand tu met Err=9 tu t'appuie sur quoi pour connaitre les codes
concernant ERR
par contre je voudrais que pour chaque onglet créer soit present la premiere
ligne qui est dans l'onglet export afin de definir les entetes de colonnes
merci beaucoup de tes lumieres
"Youky" news:
Pour connaitre le N° Err au cas ou il est possible d'avoir différentes
erreurs
comme j'ai eu le cas en faisant ta macro.
exemple
On Error Resume Next
Sheets("FeuilExistePas").select
Msgbox Err
exit sub
ou dans l'éditeur si tu tombes sur un bug (ligne en jaune)
laisse la macro en cours d'execution
tu vas en menu affichage "Fenetre Execution" si elle n'est pas affichée
tu écris:..... ? Err
tu peux aussi voir les valeurs des variables
? onglet
ou
? der
tu peux aussi dans le code mettre un point d'arret(click à gauche du code)
comme cela tu t'arrêtes ou tu veux pour tester ce qui cloche(tu reclick pour
enlever le point d'arret)
Voici la macro comme la demande...
Youky
Sub test()
Dim bas, der, lig As Integer
Dim tst
Dim onglet As String
Sheets("export").Select
bas = [A65000].End(xlUp).Row
'le nom de l'onglet en colonne E (soit 5)
For lig = 2 To bas
onglet = Sheets("export").Cells(lig, 5)
On Error Resume Next
der = Sheets(onglet).[A65000].End(xlUp).Row + 1
If Err = 9 Then
Worksheets.Add.Name = Sheets("export").Range("E" & lig).Value
Err.Clear: Sheets("export").Select
End If
If Sheets(onglet).[A1] = "" Then
Sheets("export").Range("A1:K1").Copy _
Destination:=Sheets(onglet).Range("A1:K1")
End If
'K est la colonne de fin à modifier en conséquence
Sheets("export").Range("A" & lig & ":K" & lig).Copy _
Destination:=Sheets(onglet).Range("A" & der & ":K" & der)
Next
End Sub
je ne connaissais pas cette fonction avec destination et je ne pensais pas qu'on pouvais lie directement xlup avec sheets(onglet)
comme koi on en apprend tous les jours
je vais me coucher moins bete ce soir
merci beaucoup de tes lumieres
"Youky" news: