daddycool31
XLDnaute Nouveau
bonsoir,
je suis novice en excel, je sais faire quelques petits tableaux pas beaucoup plus.
J'ai une equipe de techniciens itinérants et une de leurs tâches est de commander leur materiel manquant.
Pour cela ils ont un adresse email a l'usine.
J'ai une base de donnée de 3500 références avec colonne A code de reference et colonne B désignation.
je voudrais savoir si c'est possible de creer une feuille de commande type avec:
A= rang
B=code référence
C=désignation
D=nbr commander
E=nbr livré
sous forme de tableau a envoyer.
Mais pour leur faciliter la tâches j'aimerai mettre une touche "recherche" où il pourrait entrer soit le code, soit un mot de la désignation, une mini liste leur serait proposer et en cliquant dessus il se mettrait automatiquement dans leur feuille de commande en rang 1 ,puis en 2, puis en 3 etc..
Une fois leur feuille fini il font envoyer via outlook.
En éspèrant être assez clair d'avance Merci.
Ps je joint un exemple de ma liste de materiel sur une dizaine de références et du bouton.
j'ai trouvé un bouton recherche lié a une macro mais je n'arrive pas et je ne sais pas comment modifier et étendre la liste de mots à reconnaitre.
Sub Macro1()
Dim countTot As Long
Dim counter As Long
Dim strSearchString As String
Dim ws As Object
Dim foundCell As Variant
Dim loopAddr As Variant
Dim returnValue As String
strSearchString = InputBox(Prompt:="Saisir la valeur à chercher.", Title:="Recherche")
If strSearchString = "" Then Exit Sub
For Each ws In Worksheets
countTot = countTot + Application.CountIf(ws.UsedRange, "=" & strSearchString)
Next ws
If countTot = 0 Then
returnValue = MsgBox(" Le mot " & strSearchString & " n'est pas enregistré ", vbOKOnly, " Message ")
Else
counter = 0
For Each ws In Worksheets
With ws
.Activate
Set foundCell = .Cells.Find(What:=strSearchString, LookIn:=xlValues, LookAt:=xlPart)
If Not foundCell Is Nothing Then
loopAddr = foundCell.Address
Do
counter = counter + 1
foundCell.Activate
If countTot = 1 Then
returnValue = MsgBox(" Le mot " & strSearchString & " est enregistré 1 seule fois ", vbOKOnly, " Message ")
Exit Sub
End If
If counter = countTot Then
returnValue = MsgBox(" Le mot " & strSearchString & " sélectionné est la dernier !", vbOKOnly, "Message")
Exit Sub
Else
returnValue = MsgBox(" Le mot " & strSearchString & " est le " _
& counter & " sur " & countTot & " existants. " & _
vbLf & " Voulez vous aller au suivant ? ", vbYesNo, "Message")
If returnValue = vbNo Then Exit For
Set foundCell = .Cells.FindNext(After:=foundCell)
End If
Loop While Not foundCell Is Nothing And foundCell.Address <> loopAddr
End If
End With
Next ws
End If
'
End Sub
je suis novice en excel, je sais faire quelques petits tableaux pas beaucoup plus.
J'ai une equipe de techniciens itinérants et une de leurs tâches est de commander leur materiel manquant.
Pour cela ils ont un adresse email a l'usine.
J'ai une base de donnée de 3500 références avec colonne A code de reference et colonne B désignation.
je voudrais savoir si c'est possible de creer une feuille de commande type avec:
A= rang
B=code référence
C=désignation
D=nbr commander
E=nbr livré
sous forme de tableau a envoyer.
Mais pour leur faciliter la tâches j'aimerai mettre une touche "recherche" où il pourrait entrer soit le code, soit un mot de la désignation, une mini liste leur serait proposer et en cliquant dessus il se mettrait automatiquement dans leur feuille de commande en rang 1 ,puis en 2, puis en 3 etc..
Une fois leur feuille fini il font envoyer via outlook.
En éspèrant être assez clair d'avance Merci.
Ps je joint un exemple de ma liste de materiel sur une dizaine de références et du bouton.
j'ai trouvé un bouton recherche lié a une macro mais je n'arrive pas et je ne sais pas comment modifier et étendre la liste de mots à reconnaitre.
Sub Macro1()
Dim countTot As Long
Dim counter As Long
Dim strSearchString As String
Dim ws As Object
Dim foundCell As Variant
Dim loopAddr As Variant
Dim returnValue As String
strSearchString = InputBox(Prompt:="Saisir la valeur à chercher.", Title:="Recherche")
If strSearchString = "" Then Exit Sub
For Each ws In Worksheets
countTot = countTot + Application.CountIf(ws.UsedRange, "=" & strSearchString)
Next ws
If countTot = 0 Then
returnValue = MsgBox(" Le mot " & strSearchString & " n'est pas enregistré ", vbOKOnly, " Message ")
Else
counter = 0
For Each ws In Worksheets
With ws
.Activate
Set foundCell = .Cells.Find(What:=strSearchString, LookIn:=xlValues, LookAt:=xlPart)
If Not foundCell Is Nothing Then
loopAddr = foundCell.Address
Do
counter = counter + 1
foundCell.Activate
If countTot = 1 Then
returnValue = MsgBox(" Le mot " & strSearchString & " est enregistré 1 seule fois ", vbOKOnly, " Message ")
Exit Sub
End If
If counter = countTot Then
returnValue = MsgBox(" Le mot " & strSearchString & " sélectionné est la dernier !", vbOKOnly, "Message")
Exit Sub
Else
returnValue = MsgBox(" Le mot " & strSearchString & " est le " _
& counter & " sur " & countTot & " existants. " & _
vbLf & " Voulez vous aller au suivant ? ", vbYesNo, "Message")
If returnValue = vbNo Then Exit For
Set foundCell = .Cells.FindNext(After:=foundCell)
End If
Loop While Not foundCell Is Nothing And foundCell.Address <> loopAddr
End If
End With
Next ws
End If
'
End Sub
Pièces jointes
Dernière édition: