Copier la valeur d'une cellule A si sur la ligne contient le mot

Bonjour,

Je reviens de mander de l'aide pour un fichier sur une missions de stage : automatiser les fiches de présence.

J'ai un onglet Base de données ou j'ai le nom_prénom des agents et leur statut.

En fonction de leur statut il y a une fiche de présence à remplir.

Le but est de copier la valeur en colonne A si en colonne B il y a "manager".

Ensuite une fois copier dans "mars-20", enregistrer en PDF.

Le code d'enregistrement en PDF je l'ai trouvé. Je bloque pour le code qui permet de récupérer la valeur de cellule A

PS: je n'arrive pas à mettre le fichier en PJ il est trop volumineux

Sub rangecopy()

    Dim i As Integer
    Dim Chemin As String, NomFichier As String
    Dim Feuil As Worksheet

    Application.ScreenUpdating = False
    NomFichier = Range("J4").Value

    With Sheets("BDD PERSONNEL")
        For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row
            If .Range("N" & i) = "Manager" Then
            Range(2, i).Copy Feuil5.Range("F2:H4")
                Sheets("Feuil5").Activate
                Range("B" & i) = .Range("F2:H4")
            End If
             NomFichier = Range("J4").Value

'
    ChDir "C:\Users\wforest\Desktop\RH\MARS\SUNROAD"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "\\Chemin d'accès\" & NomFichier & "_" & "Mars" & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
        Next i
    End With

End Sub

Quand j’exécute le code rien ne se passe ça tourne en boucle, et ça enregistre un fichier mais qui est écrasé à chaque fois.

Bonjour

Le but est de copier la valeur en colonne A si en colonne B il y a "manager".

Dans votre code ce n'est pas la colonne B que vous considérez mais bien la colonne N --> If .Range("N" & i) = "Manager" Then

Ensuite vous êtes sur de ces lignes ?

Range(2, i).Copy Feuil5.Range("F2:H4") ' copie de la feuille BDD vers la feuil5
Sheets("Feuil5").Activate 'activation de la feuil5
Range("B" & i) = .Range("F2:H4") 'ligne i de la colonne B de la feuil5 égale à au cellules F2 à H4 de la feuille BDD

Faudrait voir le fichier.... vous pouvez utiliser cjoint.com et coller ici le lien qui sera renvoyé

Veillez à ne pas mettre de données confidentielles...

Crdlt

Désolé , je n'arrive pas à joindre un fichier celui ci est trop volumineux alors que j'ai pris un fichier exemple.

With Sheets("BDD PERSONNEL")

For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row

If .Range("C" & i) = "Manager" Then 'Si sur la colonne C "Manager"

Range(1, i).Copy Sheet("Mars-20").Range("F2:H4") 'copie de la cellule de la colonne 1 ligne i

Sheets("Mars-20").Activate 'activation de la feuille Mars-20

Range("A5:C7") = .Range("1:i") 'copie de la cellule colonne 1 ligne i dans la cellule A5:C7

End If

NomFichier = Range("A5:C7").Value

ChDir "C:\Users\\Desktop\MARS\"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"\\00\\CADRES\" & NomFichier & "_" & "Mars" & ".pdf" _

, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _

:=False, OpenAfterPublish:=False

Next i

End With

J'ai modifié les lignes que vous avez cité.

merci pour votre aide

Le fichier est trop volumineux. Y'a ti il une solution pour mettre sur le forum ?

merci

Re

Sur cjoint.com vous pouvez aller jusque 15 M0

Voici le lien de mon fichier

Merci

Re

je ne comprends pas ce que vous faites dans le code

Dans la feuille BDD, vous boucler sur la colonne A. Or dans cette colonne il n'y a pas de matricule à toutes les lignes. d'où des bugs lorsque vous utilsez A5 pour le nom du fichier

Lorsque vous trouvez Manager vous copier en feuille MARS en F2 à H4 ??? Pourquoi F2 à H4 ? ce n'est pas plutot A5 qu'il faut utiliser ?

Lorsque vous trouvez Manager vous copier en feuille MARS en F2 à H4 ??? Pourquoi F2 à H4 ? ce n'est pas plutot A5 qu'il faut utiliser ?

Parce que c'est une fusion de cellule

En appliquant le code : 1ère ligne message d'erreur => Sub ou Function non définie avec :le mot sheet surligné ci-dessous

Range(1, i).Copy Sheet("Mars-20").Range("F2:H4")

Je dois faire une boucle sur la colonne C et si "Manager" dans C alors copier valeur en cellule A et coller dans Mars-20 dans "F2:H4" ou "A5"

Je ne sais pas si je suis clair ou peut ête confus dans mes explications...je cherche en vain depuis 2, je pense que je commence à saturer...veuillez m'excusez mon manque de lucidité dans mes explications

Merci

Re

Essayez d'utiliser les balises de code pour les macros et Quote pour réprendre le texte du message précédent (elles sont toutes les deux entre le U et le </> en haut dans la barre d'outils)

Je ne vois pas à quoi sert F2:F4 dans votre feuille. Il n'y a rien à cette endroit.

En colonne A, il n'y a pas toujours une donnée.. si cette cellule est vide cela va renvoyer un bug. D'où le code prévoit ce cas de figure.

Dans votre fichier on va jusque la ligne 542 ??? Normal je suppose

Essayez comme ceci

Sub rangecopy()
Dim i As Integer
Dim NomFichier As String

Sheets("Mars-20").Range("A5:C7").ClearContents
With Sheets("BDD PERSONNEL")
    For i = 2 To .Range("C" & .Rows.Count).End(xlUp).Row
        If .Range("C" & i) = "Manager" Then .Range("A" & i).Copy Sheets("Mars-20").Range("A5:C7") 'copie de la cellule de la colonne 1 ligne i
        NomFichier = Sheets("Mars-20").Range("A5").Value

        If NomFichier <> "" Then 'on vérifie qu'il y a un matricule en colonne A
        ChDir "C:\Users\\Desktop\RH\MARS\"
        Sheets("Mars-20").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "\\0000srv00\Pointages_CHP\POINTAGE_MARS\CADRES\" & NomFichier & "_" & "Mars" & ".pdf" _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
    End If
    Next i
End With
End Sub

Cordialement

Désolé, il y a un matricule en A mais c'est le nom en B que je veux prendre.

Donc si je remplace A par B dans le code.

Je regarde ce que cela fait et reviens vers vous.

merci

@Dan nickel le code marche.

Une question ? Il s'arrête à la dernière ligne remplie de la colonne C ?

re

Une question ? Il s'arrête à la dernière ligne remplie de la colonne C ?

Oui normal car on boucle sur la colonne C mais peut être mieux de boucler sur la colonne B Nom et prenom. Si oui, changez juste cette ligne --> For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row

Crdlt

Edit :

il y a un matricule en A mais c'est le nom en B que je veux prendre.

vous changer ceci alors --> If .Range("C" & i) = "Manager" Then .Range("B" & i).Copy Sheets("Mars-20").Range("A5:C7")

Rechercher des sujets similaires à "copier valeur ligne contient mot"