Enregistrer résultats d'un programme VBA dans un tableau

Bonjour à tous,

Je suis complètement novice en VBA et c'est pour cela que je sollicite votre aide!

J'utilise le petit programme suivant qui me permet de repérer les références des cellules contenant l'acronyme CR :

Sub trouverCR()

tableauAdresses = cellsSearch(Range("A1:CU224"), "CR")

arrayDebug tableauAdresses

End Sub

Mes références de cellules s'affichent alors dans une MsgBox mais je souhaiterais finalement visualiser ces références dans un tableau sur un classeur Excel. Savez-vous comment faire?

Je vous remercie par avance!

Bonjour

(Un fichier aurait été appréciable )

je te prose quelque chose de "complet", en effet je me permet de pousser le code pour que tu puisse analyser les différentes mécaniques possible pour ce genre d'opération très courante !

Je t'invite aussi à te renseigner sur les mécanisme de boucle (regarde sur le forum ou sur internet il y a de quoi faire )

(Ce n'est pas par ce que un code est "long" qu'il n'est pas moins efficace et/ou rapide)

Voici mon code (que tu retrouveras dan le fichier joint) :

30recherche.xlsm (20.95 Ko)
Sub Trouver()
Dim LaPlage As Range
Dim FeuilResult As Worksheet
Dim JeCherche As String, ListCell As String
Dim Cell As Object
Dim DernLig As Integer, i As Integer, Cpt As Integer
Dim TBL As Variant

'Déclaration des variables
Set LaPlage = ThisWorkbook.Worksheets("BD").Range("A1:C50")
Set FeuilResult = ThisWorkbook.Worksheets("Résult")
JeCherche = "CR"

'Analyse des cellules à la recherche du critère de recherche
For Each Cell In LaPlage
    If Cell = JeCherche Then
        If ListCell = "" Then
            ListCell = Cell.Address
        Else
            ListCell = ListCell & "-" & Cell.Address
        End If
    End If
Next Cell

'Réstitution de la recherche
TBL = Split(ListCell, "-")
With FeuilResult
    DernLig = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A1:A" & DernLig).Clear
    Cpt = 0
    For i = LBound(TBL) To UBound(TBL)
        .Cells(i + 1, 1) = TBL(i)
        Cpt = Cpt + 1
    Next i
End With
MsgBox "Fin de l'analyse : " & Cpt & " résultat(s)." & Chr(10) & "Résulta(s) à visioner sur la feuille """ & FeuilResult.Name & """", vbInformation, "Fin de l'analyse"
End Sub

Bonjour Gautier!

C'est génial, ça fonctionne! Merci beaucoup!

Je me rends compte qu'il est possible de faire beaucoup de choses avec VBA! Comment as-tu appris? J'ai quelques bases en Python et en C mais avec VBA je ne sais pas par où commencer. As-tu des sites ou playlists de vidéos à me conseiller?

Merci encore!

Hé bien disons que je suis autodidacte dans la matière. Je me suis inscrit en 2018 sur le forum car javais besoin d'aide pour un développement pour mon entreprise (je n'y connaissais rien). Le forum est tellement réactif et surtout la présence de contributeurs hors pair m'on permis de progresser très vite

C'est top! Ça me donne de l'espoir ahah

Oui, ce forum est très efficace (de base je n'ai aucune notion de programmation et ça d'en n'importe quel langage )

donc oui ya de l’espoir

j'ai un lien dans ma bio qui renvoi sur un site (une merveille) pur apprendre le VBA !

Super je vais y jeter un oeil! Merci encore!

Rebonjour Gautier,

Excuse moi je te sollicite de nouveau car j'ai une nouvelle question avec mon problème que tu as su résoudre. En fait je souhaiterais, à partir du petit tableau de résultats obtenu, afficher pour chaque résultat le contenu de la cellule située juste en dessous dans la feuille Excel où j'ai fait la recherche du mot "CR" (donc sur la ligne suivante). J'avais pensé à écrire cela en 2ème colonne de la feuille résultats : =DECALER(Non_inversé!A1;1;0).

Non_inversé étant le nom de la feuille sur laquelle se trouve mon grand tableau (que tu avais noté BD dans ton fichier Excel).

Le problème est qu'en sélectionnant la cellule A1 je sélectionne la référence A1 et non la référence d'une cellule pour laquelle j'avais l'acronyme recherché (CR).

Je ne sais pas du tout si c'est clair mais si tu as une idée je suis preneuse!

Je viens de lire ton message entre les lignes, je regarde ça attentivement demain (tout est faisable en VBA )

N'hésite pas à me relancer demain !

D'accord merci beaucoup à demain!

Coucou Gautier, je relance un message sur ce sujet pour si jamais tu as le temps de m'aider aujourd'hui! Merci d'avance

Salut

Bon je ne sais pas si j'ai bien compris mais voilà quelque chose, dit moi si c'est ça

PS : J'en ai profité pour alléger le code au passage

4recherche.xlsm (20.50 Ko)
Option Explicit
Sub Trouver()
Dim LaPlage As Range
Dim FeuilResult As Worksheet, FeuilCherche As Worksheet
Dim JeCherche As String
Dim Cell As Object
Dim DernLig As Integer, Cpt As Integer

Set FeuilCherche = ThisWorkbook.Worksheets("BD")
Set LaPlage = FeuilCherche.Range("A1:C50")
Set FeuilResult = ThisWorkbook.Worksheets("Résult")

JeCherche = "CR"
Cpt = 0
FeuilResult.Range("A:B").Clear

With FeuilResult
    DernLig = .Range("A" & .Rows.Count).End(xlUp).Row
    For Each Cell In LaPlage
        If Cell = JeCherche Then
            DernLig = .Range("A" & .Rows.Count).End(xlUp).Row + 1
            .Cells(DernLig, 1) = Cell.Address
            .Cells(DernLig, 2) = FeuilCherche.Cells(Cell.Row + 1, Cell.Column)
            Cpt = Cpt + 1
        End If
    Next Cell
End With

MsgBox "Fin de traitement : " & Cpt & " résultat(s).", vbInformation, "Fin de traitement"

End Sub

Bonjour Gautier,

Oui ça fonctionne! c'est exactement ce que je voulais faire et je crois même que je commence à comprendre comment tout ça fonctionne! Merci beaucoup!

Tant mieux alors

Surtout n'hésite pas

Si j'ai bien compris toute cette partie du programme concerne l'affichage des résultats dans la feuille Result :

With FeuilResult

DernLig = .Range("A" & .Rows.Count).End(xlUp).Row

For Each Cell In LaPlage

If Cell = JeCherche Then

DernLig = .Range("A" & .Rows.Count).End(xlUp).Row + 1

.Cells(DernLig, 1) = Cell.Address

.Cells(DernLig, 2) = FeuilCherche.Cells(Cell.Row + 1, Cell.Column)

Cpt = Cpt + 1

End If

Next Cell

End With

Dans la même idée j'aimerais afficher dans les colonnes suivantes des résultats les infos suivantes :

  • colonne 3 : la valeur de l'étiquette colonne afin d'extraire l'année à laquelle l'acronyme a été trouvé puisque ma ligne 2 correspond à des années,
  • colonne 4 : la valeur de la première colonne (A) de la même ligne que la cellule où a été trouvée l'acronyme,
  • colonne 5 : la valeur de la deuxième colonne (B) de la même ligne que la cellule où a été trouvée l'acronyme,
  • colonne 6 : la valeur de la troisième colonne(C) de la même ligne que la cellule où a été trouvée l'acronyme.

Je vais essayer de modifier ce "paragraphe de code" pour ajouter ces données, je te demanderai certainement encore de ton aide!

Bon Gautier finalement je veux bien de ton aide

J'ai tenté quelques trucs mais ce n'est pas vraiment concluant, je ne maîtrise pas encore parfaitement la manipulation des lignes et colonnes!

Update : j'ai réussi!

Rechercher des sujets similaires à "enregistrer resultats programme vba tableau"