Macro - ajout demande plage de recherche

  • Initiateur de la discussion Initiateur de la discussion plopla
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

plopla

XLDnaute Nouveau
Bonjour,
Je vous écris car je suis confronté à un problème que je ne parviens pas a résoudre:

J'ai fait une macro pour remplir automatiquement des fiches de renseignements sur des produits. Ma première feuille a les informations concernant tous les produits et les feuilles suivantes sont les fiches (une fiche par feuille).

J'aimerais qu'au cours de l’exécution de la macro elle me demande dans quelle zone chercher les informations dont elle a besoin, notamment pour calculer le nombre de valeurs, la moyenne, le min, le max et l’écart type; et qu'elle me demande dans quelle ligne sont les informations dont elle a besoin pour le nom de l’élément, la quantité, la date 2 et la version.

J'ai joint le fichier contenant la macro et les données en question; je tiens à préciser que je suis pas expert en vba...

J'espère que vous pourrez m'aider,
Merci d'avance
 

Pièces jointes

Dernière édition:
Re : Macro - ajout demande plage de recherche

Bonjour ,

Voici une méthode avec inputbox

Code:
Sub Selection_InputBox_Multi_Zones()
'Selection de plusieurs zones avec touche CTRL
Dim Adresse_Zone As String
Dim Zones As Range, Sous_Zone As Range
 
 On Error Resume Next
 Set Zones = _
        Application.InputBox("Selection d'une ou plusieurs plages avec la touche CTRL:", _
           "Multi_plage test", Selection.Address(0, 0), Type:=8)
    On Error GoTo 0
    If Zones Is Nothing Then Exit Sub
    For Each Sous_Zone In Zones.Areas
        Adresse_Zone = Adresse_Zone & Chr(10) & Sous_Zone.Rows.Count _
           & " dans ligne " & Sous_Zone.Address(0, 0)
    Next Sous_Zone
    MsgBox "Plage: " & Zones.Areas.Count & ", " & _
        "Lignes: " & Zones.Rows.Count & Adresse_Zone
End Sub
 
Re : Macro - ajout demande plage de recherche

Bonjour,

Merci pour cette réponse, mais je ne parviens pas à la faire fonctionner. Probablement parce que je ne l’insère pas correctement dans ma macro.
Comment dois-je adapter ma macro pour rajouter l'inputbox ?

Merci beaucoup pour votre aide
 
Re : Macro - ajout demande plage de recherche

Bonjour,
Merci pour le fichier.
J'ai modifié le code pour qu'il fonctionne sur n'importe quelle feuille et j'ai rajouté le code pour remplir les autres cases. Mais je ne parviens pas à faire fonctionner les fonctions de la moyenne, le min, le max et l’écart type et NB.
Pouvez vous me dire quelles modifications je dois faire svp

Merci d'avance

Code:
Sub Exemple()
Dim phrase1 As String
Dim phrase2 As String
Dim phrase3 As String
Dim phrase4 As String
Dim phrase5 As String
Dim phrase6 As String
Dim Parametres As String
Dim strSheetName As String

strSheetName = ActiveSheet.Name
 phrase1 = "Choisir l'élément"
 phrase2 = "Choisir la date 1"
 phrase3 = "Choisir la version"
 phrase4 = "Choisir la date 2"
 phrase5 = "Choisir la quantité"
 phrase6 = "Choisir les valeurs"
 
 Sheets("Feuil1").Select
 Range("A26").Select
 Parametres = Selection_InputBox_Multi_Zones(phrase1)
 Parametres = ActiveSheet.Name & "!" & Parametres
 Sheets(strSheetName).Range("C7").Formula = "=" & Parametres
 
 Parametres = Selection_InputBox_Multi_Zones(phrase2)
 Parametres = ActiveSheet.Name & "!" & Parametres
 Sheets(strSheetName).Range("C8").Formula = "=" & Parametres
 
 Parametres = Selection_InputBox_Multi_Zones(phrase3)
 Parametres = ActiveSheet.Name & "!" & Parametres
 Sheets(strSheetName).Range("C9").Formula = "=" & Parametres
 
 Parametres = Selection_InputBox_Multi_Zones(phrase4)
 Parametres = ActiveSheet.Name & "!" & Parametres
 Sheets(strSheetName).Range("C10").Formula = "=" & Parametres
 
 Parametres = Selection_InputBox_Multi_Zones(phrase5)
 Parametres = ActiveSheet.Name & "!" & Parametres
 Sheets(strSheetName).Range("E18").Formula = "=" & Parametres
 
 Parametres = Selection_InputBox_Multi_Zones(phrase6)
 Parametres = ActiveSheet.Name & "!" & Parametres
 Sheets(strSheetName).Range("H18").Formula = "=COUNT" & Parametres
 Sheets(strSheetName).Range("E19").Formula = "=AVERAGE" & Parametres
 Sheets(strSheetName).Range("G18").Formula = "=MIN" & Parametres
 Sheets(strSheetName).Range("E20").Formula = "=MAX" & Parametres
 Sheets(strSheetName).Range("G20").Formula = "=STDEV" & Parametres
 
End Sub

Function Selection_InputBox_Multi_Zones(Message As String) As String
'Selection de plusieurs zones avec touche CTRL
Dim Adresse_Zone As String, Adresses As String
Dim Zones As Range, Sous_Zone As Range
 
 On Error Resume Next
 Set Zones = _
        Application.InputBox("Selection d'une ou plusieurs plages avec la touche CTRL:" _
          & Chr(10) & Message, "Multi_plage test", Selection.Address(0, 0), Type:=8)
    On Error GoTo 0
    If Zones Is Nothing Then Exit Function
    For Each Sous_Zone In Zones.Areas
        Adresse_Zone = Adresse_Zone & Chr(10) & Sous_Zone.Rows.Count _
           & " dans ligne " & Sous_Zone.Address(0, 0)
        Adresses = Adresses & IIf(Adresses <> "", "," & Sous_Zone.Address(0, 0), Sous_Zone.Address(0, 0))
    Next Sous_Zone
  'Affichage désactivé pour cette utilissation
'    MsgBox "Plage: " & Zones.Areas.Count & ", " & _
        "Lignes: " & Zones.Rows.Count & Adresse_Zone
    Selection_InputBox_Multi_Zones = Adresses
End Function
 

Pièces jointes

Re : Macro - ajout demande plage de recherche

Bonsoir ,

en tous cas , cela fait plaisir de t'aider , tu essaies d'avancer et ça c'est top.

Voilà , avec une premiére simplification ,

Mais avec une boucle et des tableaux de variables l'on pourrait faire plus court ...

Code:
Sub Exemple()
Dim phrase1 As String, phrase2 As String, phrase3 As String, phrase4 As String
Dim phrase5 As String, phrase6 As String, Parametres As String
Dim strSheetName As String

 strSheetName = ActiveSheet.Name
 phrase1 = "Choisir l'élément"
 phrase2 = "Choisir la date 1"
 phrase3 = "Choisir la version"
 phrase4 = "Choisir la date 2"
 phrase5 = "Choisir la quantité"
 phrase6 = "Choisir les valeurs"
 
 Sheets("Feuil1").Select
 Range("A26").Select
 Parametres = ActiveSheet.Name & "!" & Selection_InputBox_Multi_Zones(phrase1)
 Sheets(strSheetName).Range("C7").Formula = "=" & Parametres
 
 Parametres = ActiveSheet.Name & "!" & Selection_InputBox_Multi_Zones(phrase2)
 Sheets(strSheetName).Range("C8").Formula = "=" & Parametres
 
 Parametres = ActiveSheet.Name & "!" & Selection_InputBox_Multi_Zones(phrase3)
 Sheets(strSheetName).Range("C9").Formula = "=" & Parametres
 
 Parametres = ActiveSheet.Name & "!" & Selection_InputBox_Multi_Zones(phrase4)
 Sheets(strSheetName).Range("C10").Formula = "=" & Parametres
 
 Parametres = ActiveSheet.Name & "!" & Selection_InputBox_Multi_Zones(phrase5)
 Sheets(strSheetName).Range("E18").Formula = "=" & Parametres
 
 Parametres = ActiveSheet.Name & "!" & Selection_InputBox_Multi_Zones(phrase6)
 
 Sheets(strSheetName).Range("H18").Formula = "=COUNT(" & Parametres & ")"
 Sheets(strSheetName).Range("E19").Formula = "=AVERAGE(" & Parametres & ")"
 Sheets(strSheetName).Range("G19").Formula = "=min(" & Parametres & ")"
 Sheets(strSheetName).Range("E20").Formula = "=MAX(" & Parametres & ")"
 Sheets(strSheetName).Range("G20").Formula = "=STDEV(" & Parametres & ")"
 
End Sub

Function Selection_InputBox_Multi_Zones(Message As String) As String
'Selection de plusieurs zones avec touche CTRL
Dim Adresse_Zone As String, Adresses As String
Dim Zones As Range, Sous_Zone As Range
 
 On Error Resume Next
 Set Zones = _
        Application.InputBox("Selection d'une ou plusieurs plages avec la touche CTRL:" _
          & Chr(10) & Message, "Multi_plage test", Selection.Address(0, 0), Type:=8)
    On Error GoTo 0
    If Zones Is Nothing Then Exit Function
    For Each Sous_Zone In Zones.Areas
        Adresse_Zone = Adresse_Zone & Chr(10) & Sous_Zone.Rows.Count _
           & " dans ligne " & Sous_Zone.Address(0, 0)
        Adresses = Adresses & IIf(Adresses <> "", "," & Sous_Zone.Address(0, 0), Sous_Zone.Address(0, 0))
    Next Sous_Zone
  'Affichage désactivé pour cette utilissation
'    MsgBox "Plage: " & Zones.Areas.Count & ", " & _
        "Lignes: " & Zones.Rows.Count & Adresse_Zone
    Selection_InputBox_Multi_Zones = Adresses
End Function
 

Pièces jointes

Re : Macro - ajout demande plage de recherche

Merci beaucoup !

J'ai encore un petit souci. La première feuille des documents avec les quels je travaille ne s'appelle pas toujours Feuil1. Comment faire pour que la macro travaille avec les données de la première feuille et non pas avec celle de la feuille qui s'appelle "Feuil1".

Actuellement j'ai ça:
Sheets("Feuil1").Select

Merci d'avance
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
286
Retour