Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Debut d'une macro en fonction d'une cellule varible

Remi_54500

XLDnaute Nouveau
Bonjour,

Je suis pas très à l'aise avec VBA, du coup j'aurais besoin de votre aide malgré mes recherches.

Dans un fichier j'ai le code suivant :

Sub test()

Range("B28").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]="""","""",VLOOKUP(RC[-1],[Wiring_diagram_codebook.xlsm]Nomenclature!C1:C7,3,FALSE))"
derniere_ligne = Range("a28").End(xlDown).Row
' ou derniere_ligne = ActiveSheet.UsedRange.Rows.Count
Range("B28:E28").AutoFill Destination:=Range("B28:E" & derniere_ligne), Type:=xlFillDefault

End Sub


Cela me permet de copier dans de la cellule B28, les valeurs d'une recherche verticale dans un autre fichier en fonction du contenu de la cellule A28. Cela continue jusqu'à arriver sur une cellule vide de la colonne A.

Mon problème est que ce fichier est spécifique pour un type de produit et que pour un autre produit la macro pourrait commencer qu'à partir de la cellule B50 ou B10, enfin ca serait une valeur variable.

Comment puis je intégrer cela dans le code VBA ?
Si cela peut aider à ce que ce soit plus simple, je peux par exemple mettre dans une cellule (à coté du bouton macro) l'information disant que la macro doit commencer à partir de telle valeur de cellue. Du genre en cellule J2 j'indique B50 pour dire à la macro que c'est en B50 qu'elle doit commencer.

J'espère que c'est assez clair pour vous et merci d'avance pour votre aide.
 

jui42

XLDnaute Junior
Je finis dans très peu de temps mais pour pas que vous ne soyez bloqué, voici un code permettant de rechercher toutes les cellules correspondantes à une valeur.
VB:
              Dim FirstFound As String        ' definition des variable que l'on va utiliser
        Dim FoundCell As Range, rng As Range
        Dim myRange As Range, LastCell As Range
        Dim cb1 as Variant
        
        'Valeur a chercher cb1, 
        cb1 = InputBox("Valeur à chercher")
        Set myRange = ActiveSheet.Range("votre plage de recherche") 'Ici vous supprimez le ActiveSheet et vous renseignez le classeur ou la feuille sur laql est effectuée la recherche
        Set LastCell = myRange.Cells(myRange.Cells.Count)
        Set FoundCell = myRange.Find(what:=cb1, After:=LastCell, LookAt:=xlPart)
        
        'Test pour voir si qlq chose est trouver
        If Not FoundCell Is Nothing Then
            FirstFound = FoundCell.Address
            
        Else
            
            GoTo NothingFound    'Vous devez définir votre nothingFounD en bas de code après avoir mis ExitSub  vous pouvez mettre NothingFound : MsgBox("rien n'a été trouvé")
        End If
        
        Set rng = FoundCell
        ' TEST POUR EMPECHER L'ERREUR SUR LA VALEUR TROUVEE
        
        'Tour jusqu'a que ça trouve tout
        Do Until FoundCell Is Nothing
            'Trouve la nouvelle cellule avec la valeur
            Set FoundCell = myRange.FindNext(After:=FoundCell)
            
            'Ajoute la valeur a la variable tableau
            Set rng = Union(rng, FoundCell)
            
            
            If FoundCell.Address = FirstFound Then Exit Do
            
        Loop
        
        'selection du tableau
        rng.Select       ' rng représente toute les cellules ayant une correspondances
Nous regarderons ensemble demain si cela ne vous avance pas.
Cdt
 

Remi_54500

XLDnaute Nouveau
Bonjour,

Voila un fichier exemple.
J'ai simplifier le code pour comprendre le principe. Après j'essayerai de l'adapter dans le code complet.

Cordialement,
 

Pièces jointes

  • Classeur3.xlsm
    35.4 KB · Affichages: 4
Dernière édition:

Remi_54500

XLDnaute Nouveau
Jui42,

Oula je n'ai pas compris grand chose à tout ce code :/

En fait je cherche à faire un fichier "master".

Ensuite il existerait 4, 5, voire 10 fichiers du même principe. Sauf que sur le 1er fichier ma macro devrait commencer à partir de la cellule B28, sur le 2eme fichier la macro devrait commencer à partir de la cellule B50 et sur le 8ème fichier à partir de la cellule B10 par exemple.

Du coup j'aimerai mettre la valeur de la cellule où la macro doit commencer dans une cellule J2 (par exemple) et que dans le code VBA, là où j'ai mis B28 et A28, ca lise la valeur qui est en J2.
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour @Remi_54500 , Jui42, Patoq

Je te propose cette version et tu n'as pas besoin de renseigner quoique ce soit la macro retrouve ces petits tout seul

Bien sur une adaptation est toujours possible....

Merci de ton retour

@Phil69970
 

Pièces jointes

  • RechercheV sur cellule variable V1.xlsm
    37.8 KB · Affichages: 3

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…