Résultat de Findnext dans un tableau

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 !

rastafouette

XLDnaute Occasionnel
Bonjour à tous,

J'ai qques soucis/questions avec la fonction findnext.
explication de ce que je veux faire
l'utilisateur toto va sur le 2nd onglet du classeur, mets des "x" en colonne M sur les lignes remplies qui lui conviennent, puis retourne sur le 1er onglet, met un "x" en colonne H sur la ligne voulue, clique sur un bouton mail (déjà créé) et les infos des lignes sélectionnées du 2nd onglet se collent en forme de tableau sur le mail créé.

Ma 1ere quesiton : qd je recherche dans mon 1er onglet colonne H (colonnes A à G remplies), si une ou plusieurs cellules ont été selectionnées (avec un "x" dedans tout simplement pour le moment) et je colorie cette cellule "x". Ca c'est fait, ça marche.
Ce que je voudrais, sur cet onglet, c'est d'abord, avant de colorier, vérifier qu'il n'y a qu'une seule cellule avec un "x" dans cette colonne, et s'il y en a plusieurs, mettre un message et faire sortir.

Ensuite, j'ai trouvé aussi (grace au forum et à toutes vos contributions, d'ailleurs merci) comment ouvrir un mail avec les données de la ligne du "x".

En 2eme question, ce que je voudrais rajouter au mail créé, c'est un tableau avec les données des lignes selectionnées du 2nd onglet (pas toute la ligne, seulement qques cellules) et les metttre dans un tableau sur le mail (entre le blabla d'intro et la signature automatique) ????

J'ai déjà ceci dans le code du bouton de ma feuille onglet2
Code:
Private Sub CB_Mail_Click()

With Range("H:H")
    Dim rrr As Range
    Set rrr = .Find("x", LookIn:=xlValues)
        If Not rrr Is Nothing Then
            firstAddress = rrr.Address
            Do
               rrr.Interior.ColorIndex = 33
               Set rrr = .FindNext(rrr)
            Loop While Not rrr Is Nothing And rrr.Address <> firstAddress
        'Call OuvrirMail(rrr)
    End If
End With
End Sub

et ça dans un module
Code:
Sub OuvrirMail(ByVal TARGET As Range)

    Set OlApp = CreateObject("Outlook.application")
    Set OlItem = OlApp.CreateItem(olMailItem)
    
    ligne = TARGET.Row
    
    Dim strbody As String
    strbody = "<HTML>blablabla<HTML>"

    With OlItem
        .Display
        .To = "xxxxxxx@xxx.com"
        .CC = "xxxxxxx@xxx.com"
        .Subject = Cells(ligne, 1).Value & "-" & Cells(ligne, 2).Value & "-" _
        & Cells(ligne, 3).Value & " " & Cells(ligne, 4).Value & " - " _
        & Cells(ligne, 5).Value
        '.BodyFormat = olFormatHTML
        .htmlBody = strbody & .htmlBody
        '.Display 'Ou .Send
    End With

End Sub

Je suis pas pro du tout en vba, alors je pense que tout ce code peut être simplifié, mais comment ?

Merci en tout cas d'avance d'avoir pris le temps de me lire
En espérant que vous pourrez m'aider.
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour