Formule recherchev en VBA

11test.xlsm (167.91 Ko)

Bonjour à tous, j'essaye de faire une recherchev en VBA, j'ai essayé avec le code suivant cependant mon offset ne me permet pas d'afficher quelque chose si quelqu'un sait pourquoi ça ne fonctionne pas ?

            Set re = Sheets("README").Range("Tableau9[#All]").Find(Cells(i, 4).Value, LookAt:=xlWhole)
                If Not re Is Nothing Then
                    Cells(i + 1, 14).Value = "UNITE FONCTIONNELLE " & compteur & " : " & re.Offset(, 2).Value
                End If

Merci d'avance !

Bonjour,

Vous auriez du décrire ce que vous cherchiez à faire avec votre code dans sa globalité, avec un exemple concret avec le résultat attendu et la démarche logique pour y arriver. Ici re ne renvoie rien car Cells(i,4) ne contient rien. En effet lorsque i = 19 vous insérez une ligne à cet endroit, donc les lignes 19 et 20 sont vides. Donc vous cherchez une cellule Cells(I,4) où I est une ligne vide.

Donc comme re est égal à rien, la suite de votre code ne s’exécute pas.

Je vous conseille d'activer la fenêtre des variables locales (sous l'éditeur VBA > Affichage > Fenêtre de variable locale) et d'explorer votre code en mode pas à pas (F8 après vous être positionné dans votre macro) pour mieux comprendre le phénomène et modifier votre code en fonction de votre besoin.

Cdlt,

Bonjour,

Merci de votre réponse, désolé de ne pas avoir trop expliqué le problème.

Je recommence:

Au départ j'ai ça, puis en appuyant sur le bouton "AJOUTER LES UF", ça m'insère des lignes quand la cellule de la colonne de la "ZONE" est différente...

capture d ecran 2021 07 09 090525

Ci-dessous, le résultat. Le problème est qu'avec la partie de programme que j'ai envoyé dans le premier message, je cherche à ce que dès qu'on change de ZONE, alors la valeur de la cellule, si elle est présente dans mon "Tableau9" présent dans la feuille "README", alors ça me colle la cellule d'à côté du tableau, comme une recherchev. Par exemple, "UNITE FONCTIONELLE 2 : Gazomètre"

capture d ecran 2021 07 09 090639

Bonjour,

Je suis assez de l'avis d'Ergotamine.
Je comprends si vous postez c'est que vous demandez de l'aide mais de là à balancer une demande avec un fichier sans explications...

Cela m'a fait chercher pas mal de temps passé hier pour comprendre ce que vous vouliez obtenir. Voici la partie de code que j'avais préparé qui me semble solutionner votre souci :

 Set re = Sheets("README").Range("Tableau9[#All]").Find(Cells(i + 2, 4).Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not re Is Nothing Then
        Cells(i + 1, 14).Value = "UNITE FONCTIONNELLE " & compteur & " : " & Sheets("Readme").Range(re.Address).Offset(, 1).Value
    End If

Cordialement

Edit : la variable Zone ne sert pas dans votre code. D'ailleurs à ce sujet, je pense que le code pourrait être revu et allégé. Mé bon, si cela fonctionne comme cela..

Je viens de tester et ça fonctionne ! Merci beaucoup pour votre réponse !! Désolé de pas avoir expliqué en détails!

Bonjour,

Votre code revu après un régime en retirant les variables inutiles au cas où :

Sub AJOUTER_UNITE_FONCTIONNELLE()
Dim i&, re As Object
i = 8
Application.ScreenUpdating = False
With Worksheets("LISTE GENERALE")
    While .Cells(i, 4).Offset(1) <> ""
            If .Cells(i, 4) <> .Cells(i, 4).Offset(1) Then
                .Rows(i).Offset(1).Insert
                .Rows(7).Copy
                .Rows(i).Offset(1).PasteSpecial
                .Rows(i).Offset(1).ClearContents
                Set re = Worksheets("README").Range("Tableau9[#All]").Find(.Cells(i, 4).Offset(2), LookAt:=xlWhole)
                If Not re Is Nothing Then
                    .Cells(i, 14).Offset(1) = "UNITE FONCTIONNELLE " & compteur & " : " & re.Offset(, 1)
                End If
                i = i + 1
            End If
        i = i + 1
    Wend
End With
Application.ScreenUpdating = True
End Sub

Cdlt,

Re

On a beau dire 3x de cloturer le fil..... rien à faire, il ne veut pas

Rechercher des sujets similaires à "formule recherchev vba"