Aide pour création de macro

Bonjour,

Je viens auprès de vous car j'ai besoin d'aide pour la réalisation d'une macro un peu "complexe", en tout cas pour mon niveau de connaissances du VBA et de EXCEL. Généralement j'essaie au maximum de me débrouiller par moi même mais là j'ai déjà du mal à trouver par où commencer et surtout quelles fonctions utiliser.

Je mets en gros ce que je cherche à faire et si vous pouvez au moins me mettre sur la piste de ce que je dois faire et des fonctions à utiliser ce serait déjà pas mal, ensuite j'essaierai d'avancer et reviendrai si je n'y parviens pas tout seul.

  • Je dois rechercher 2 valeurs précises dans un second classeur que j'ouvre déjà par macro, les valeurs sont toutes les 2 dans une même colonne. Ensuite il faudrait que j'utilise la position de ces 2 valeurs pour tester combien de lignes en dessous j'arrive sur une cellule vide. Cela me donnerait pour chaque cellule de départ une longueur de sélection.
  • Je voudrais ensuite utiliser ces "points de départ" et les nombres de cellules pour pouvoir copier xx cellules de la ligne située xx en dessous jusqu'à la ligne yy d'une autre colonne. Ceci sur plusieurs colonnes et ensuite la même chose pour la seconde "origine" et copier/coller cette sélection à chaque fois dans le premier classeur à partir d'une cellule précise... je sais pas si je suis bien clair.

J'arrive à effectuer ma recherche mais ensuite pas moyen de faire la sélection voulue.

merci de votre aide

Bonjour,

Une piste pour commencer :

Sub Test()

    Dim Classeur As Workbook
    Dim Plage As Range
    Dim Cel As Range
    Dim Ligne1 As Long
    Dim Ligne2 As Long
    Dim Mot1 As String
    Dim Mot2 As String

    'adapter le chemin et nom du classeur...
    Set Classeur = Workbooks.Open("C:\MonDossier\MonClasseur.xls")

    'en colonne A de la feuille "Feuil1", à adapter...
    With Classeur.Worksheets("Feuil1")

        Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))

    End With

    'les 2 mots recherchés, toujours à adapter !
    Mot1 = "Mot1"
    Mot2 = "Mot2"

    'recherche du 1er mot
    Set Cel = Plage.Find(Mot1, , xlValues, xlWhole)
    'si trouvé, mémorise la ligne
    If Not Cel Is Nothing Then Ligne1 = Cel.Row

    'recherche du 2ème mot
    Set Cel = Plage.Find(Mot2, , xlValues, xlWhole)
    'si trouvé, mémorise la ligne
    If Not Cel Is Nothing Then Ligne2 = Cel.Row

    'affiche le résultat. C'est ici qu'il faudra voir quoi faire...
    MsgBox "Le mot 1 " & Mot1 & " se trouve en ligne " & Ligne1 _
    & vbCrLf _
    & "Le mot 2 " & Mot2 & " se trouve en ligne " & Ligne2 _
    & "La dernière ligne utilisée en colonne A est la ligne " & Plage.Count

End Sub

Bonjour theze,

Merci pour ta reponse et ce debut d'aide.

La methode n'a deja rien a voir avec ce que j'avais fait jusque là.

Je vais essayer de voir ce que j'arrive a faire avec ton code, mais en le lisant je me demande si ca va me donner ce que je cherche... recherche de la ligne avec la premiere valeur, calcul de la premiere cellule vide en dessous, recherche de la seconde valeur qui est soit au dessus de la premiere soit en dessous, et a nouveau recherche de la cellule vide en dessous. Ce qui me donnerai par exemple : plage1 de 5 a 25 et plage 2 de 30 a 60, ou inversement. Ensuite reste a trouver comment on peut selectionner des cellules de maniere absolue par rapport a valeur1 et valeur 2...

Bonjour,

Donc, si j'ai bien compris les valeurs cherchées ne sont pas dans la même colonne car sinon, la dernière cellule non vide (+1 pour la première vide) est identique pour les deux. Ou se trouve la plage de recherche ?

Bonjour theze,

Si elles sont bien dans la meme colonne. En fait le second fichier que j'ouvre afin d'en copier les données se constitue d'un premier tableau nommé patron1, puis quelques lignes vides de séparation, puis un second tableau nommé patron2. Dans ces 2 tableaux il y en a un court et un long, pas toujours dans le meme ordre et dans ces 2 tableaux il n'y a qu'un certain nombre de lignes au milieu dont je veux récupérer les valeurs. C'est pour ca que je dois determiner la longueur des 2 afin de selectionner precisément le contenu a coller au bon endroit dans le premier fichier (trame pour edition de rapport)

Merci encore pour ton aide


J'oubliais, j'ai fais quelques recherches hier soir et apparemment c'est avec les offsets en deplacement relatif que je peux arriver a faire mes sélections donc je vais peut etre pouvoir progresser en fouillant ca et en faisant des essais

Je mets le sujet en résolu.

Je suis parvenu à faire ce que je voulais en utilisant RANGE, CELLS, et OFFSET. J'ai eu un peu de mal au début mais après avoir bien saisi le principe finalement c'était assez simple.

J'ai encore quelques petits trucs à voir donc peut-être reviendrai-je une autre fois pour une nouvelle piste

Merci de m'avoir mis un peu sur la voie

Rechercher des sujets similaires à "aide creation macro"