Boucle for : copie/colle des données selon variables

Bonjour à tous !

Déjà je tenais à vous dire que je trouve ce forum super et je vous remercie tous, vous pro du VBA, pour prendre un peu de votre temps pour nous aider, nous petits débutants

J'ai une problématique globale qui est d'automatiser l'écriture de lettre de mission en fonction de la personne considérée et de ses attendus managériaux. J'ai donc pensé au publipostage pour faire ca rapidement. Pour cela, il faut que je me crée ma base de données excel à partir d'un fichier que j'ai et dont la forme ne correspond pour l'utilisation du publipostage.

Donc en gros, par rapport à ce fichier qu'on viendrait compléter et changer, j'aimerais me créer un automatiquement un autre tableau excel très simple, avec dans la première colonne tous les noms qui sont repris, dans la seconde, les missions en tant que "Responsable" et dans le troisième les missions en tant qu' "Appui" (je vous ai mis un exemple dans le fichier téléchargé)

L'objectif c'est :

  • Prendre le nom de la première colonne et le copier autant de fois dans le fichier base excel publipostage (TabJulie) qu'il y a de missions (R +A).
  • Ensuite en fonction du type de responsabilité indiqué dans la colonne du nom en conséquence, venir ajouter le libellé des missions dans les deuxieme et troisième colonne de la feuille TabJulie.
Le but étant qu'il y ait un nom (plusieurs fois le meme) par mission.

J'ai réussi à le faire pour une cellule, mais quand je cherche à l'automatiser pour toute une colonne (donc un om) et encore plus, pour tout le tableau, je me perds et plus rien ne fonctionne avec les boucles for .

Je vous mets un bon de mon code qui ne fonctionne pas et vous joins mon fichier pour que vous compreniez mieux mon besoin.

For i = 2 To 100

If Worksheets("Général").Range("Ci+1").Value = "R" Or Worksheets("Général").Range("Ci+1").Value = "A" Then

Worksheets("TabJulie").Range("Ai+3").Value = Worksheets("Général").Range("Ci")

Else: Worksheets("TabJulie").Range("Ai+3").Value = ""

End If

Next i

End Sub

Je vous remercie grandement si vous pouvez m'aider à me dépatouiller !!

A bientôt et merci d'avance

bonjour,

une solution (sans mise en forme)

Sub NomsAI()
'
    With Worksheets("général")
        dn = .Cells(2, Columns.Count).End(xlToLeft).Column 'dn = dernier nom
        dl = .Cells(Rows.Count, 2).End(xlEnd).Row ' dl = dernière ligne
        lg = 4 'n° de ligne dans le tableau résultat
        For i = 3 To dn 'on prend les noms un à un
            For j = 3 To dl 'on parcourt la colonne
                If .Cells(j, i) <> "" Then ' si cellule <>""
                    If .Cells(j, i) = "R" Then col = 2 Else col = 3 'on détermine si colonne responsable ou appui
                    lg = lg + 1 'incrémente n° de ligne résultat
                    Worksheets("TabJulie").Cells(lg, 1) = .Cells(2, i) ' on copie le nom
                    Worksheets("TabJulie").Cells(lg, col) = .Cells(j, 2) 'on copie l'activité dans la colonne col
                End If
            Next j
        Next i
    End With
End Sub

Bonjour,

Je viens de tester votre solution, elle fonctionne c'est génial !

Un énorme merci, réellement, vous m'enlevez une grosse épine du pied.

Je vais quand meme essayer de comprendre ce que vous avez fait, je me permettrais de vous poser quelques questions si je ne saisis pa tout.

Merci encore !

Bonne journée

Rechercher des sujets similaires à "boucle copie colle donnees variables"