Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

liste de nom pour variable

4 réponses
Avatar
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

4 réponses

Avatar
Youky
J'ai simplifié ta macro,
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
Avatar
pinpon1
je viens de tester a l'instant trop de la BALLLE

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" a écrit dans le message de
news:
J'ai simplifié ta macro,
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




Avatar
Youky
Re bonjour
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
Avatar
pinpon1
impecable ca marche nickel chrome
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" a écrit dans le message de
news:
Re bonjour
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