Erreur de syntaxe bva

Bonjour,

Est-ce que tu utilises bien le code du fichier que je t'ai soumis Hier à 19:43 ??

Je demande, car j'ai cherché fd.Range("A2:R2").Copy et je ne l'ai pas trouvé ...

la macro planning efface les celulles H2 jusqu'à Q2 après le report >> je ne vois pas ce phénomène ... >> Il y a bien la macro "Formule" qui copie les formules de H à Q > c'est peut être de là que provient le souci ... est-ce que ces cellules sont vraiment vides ?? >> ou bien les formules ne donnent pas de résultat et les cellules paraissent vides ??

ric

Encore une fois tu as raison...en fait j'ai insérer une ligne en ligne 1 et j ai oublié de modifier la macro "formule" et la macro "planning"...c'est chose faite.

J'ai modifier egalement la macro "mfc"...elle fonctionne bien mais pas partout...je pense encore avoir fait une erreur d ecriture....:

Sur cette ligne, la mfc devrait bien s'appliquer aux colonnes A, B et D ? Or elle ne s'applique qu'en A :

With Sheets("données").Range("A3:B100,D3:D100") 'Sélection des plages où doit s'appliquer la MeF.

Ensuite j'aimerai compléter quelque chose...mais tu as déjà passé beaucoup de temps sur mon cas. Donc si tu veux arrêter là je comprendrais :)

Dans le même genre, j'aimerai intercaler dans la feuille "pers" les lignes des personnes correspondantes mais en se basant cette fois sur la colonne "titulaire / Interim" et nom plus "Client" en copiant les colonnes de A à D et de H à Q.

J'ai mis l'exemple dans la feuille attendu. Je pensais imbriquer ça dans la macro "planning" mais il serait peut etre plus simple de créer une nouvelle macro ? Qu'en penses tu ?

Je te joint le fichier à jour

Bonjour,

Non, non, je ne suis pas tanné de ton fichier > je l'aime bien ...

Un souci à la fois > la MFC > il manque un signe de $ devant le E > comme ceci > Formula1:="=$E3=""Supplay""" ...

Je regarde la suite ...

ric

Ah oui c est beaucoup mieux :)

merci

Bonjour,

Pour le 2e Planning > que j'ai nommé "PlanningPers" > cette macro, pour l'instant, n'est pas imbriquée avec les autres afin que tu la testes avant ...

Je crois que tu as compris le principe d'appel d'une macro à l'autre pour l'imbrication ...

"PlanningPers" > tout au haut du module > j'ai ajouté 2 variables : flp et fp ...

J'ai remplacé les "fc" par "flp" ( CTRL+H ) > puis j'ai remplacé les "ft" par "fp" > il ne restait que "C" qui devient "E" et fd.Cells(i, 3) qui est devenu fd.Cells(i, 5) ...

Par contre : fd.Cells(i, 3) et fd.Cells(i, 5) pourraient s'écrirent fd.Cells(i, "C") et fd.Cells(i, "E") > c'est facilitant dans la compréhension du code ...

Au plaisir,

ric

effectivement suite à ta dernière phrase j ai fait le remplacement dans les 2 macros.

J'ai 2 nouveau problemes :

le report reprenait toutes les lignes alors qu'il ne me fallait que de A à D et H à Q. J'ai modifié pour ce qui est des lignes du tableau mais je n'y arrive pas pour "l'entête" :

PrénomNomLieu de travailTitulaire / InterimPosteEquipeLundi AMLundi PMMardi AMMardi PMMercredi AMMercredi PMJeudi AMJeudi PMVendredi AMVendredi PM

Ce qui m'amène au 2eme probleme....logiquement la recopie reprend les formules de la feuille "données" et non les valeurs. Ca ne se voyait pas dans la feuille "Test" car presque toutes les colonnes etaient reportées, mais ca me met des colonnes vides dans la feuille "pers".

J'ai bien essayé de remplacer "insert" par pastvalues mais sans succès.

* petite contrainte supplémentaire dans la macro "PlanningPers" : il faudrait que les lignes du "client5" ne soit pas pris en compte dans le report..:)

je continue de chercher

Bonjour,

Excuse-moi pour AD et HQ > j'avais zappé cet info

Je regarde cela > AD et HQ > valeurs et non formules > exclure le Client5 ...

ric

Bonjour,

Les 3 critères sont respectés ...

Il rester à dynamiser, en passant par une variable, l'exclusion du "Client5" > selon le besoin ...

Un essai ...

Sub PlanningPers()

    Application.ScreenUpdating = False

    Set fd = Sheets("données")
    Set flp = Sheets("Liste pers")
    Set fp = Sheets("pers")
    Set dico = CreateObject("Scripting.Dictionary")

    Application.ScreenUpdating = False
    For i = 2 To flp.Range("A" & Rows.Count).End(xlUp).Row
        dico(flp.Range("A" & i).Value) = ""
    Next i

    'initialisation
    derLn = fp.Range("A" & Rows.Count).End(xlUp).Row
    For i = derLn To 2 Step -1
        If Not (dico.exists(fp.Range("A" & i).Value) And fp.Range("B" & i) = "") Then
            fp.Range("A" & i & ":R" & i).Delete Shift:=xlUp
        End If
    Next i

    derLn = fp.Range("A" & Rows.Count).End(xlUp).Row
    For i = derLn To 2 Step -1
        fp.Range("A1:G1").Copy
        fp.Range("A" & i & ":G" & i).Insert Shift:=xlDown
    Next i
    fp.Range("A1:G1").Delete Shift:=xlUp

    'Report

    For i = 3 To fd.Range("A" & Rows.Count).End(xlUp).Row
        If fd.Range("E" & i) <> "" Then
            Set cell = fp.Range("A:G").Find(fd.Cells(i, 5).Value, lookat:=xlWhole)
            If Not cell Is Nothing Then
                lgn = cell.Row
                'If cell.Offset(2, 0) = "" Then
                If fp.Cells(lgn + 2, 2) = "" Then
                    cell.Offset(1, 0).Resize(1, 18).Insert Shift:=xlDown
                    fd.Range("A2:R2").Copy
                    cell.Offset(2, 0).Resize(1, 18).Insert Shift:=xlDown
                    fp.Cells(lgn + 1, 1).Offset(1, 2).Delete Shift:=xlToLeft
                    fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft
                    fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft
                    fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft

                End If
                d = 0
                Do Until fp.Cells(lgn + 2 + d, 1) = ""
                    d = d + 1
                Loop
                ln = lgn + 2 + d
                fp.Range("A" & ln & ":Q" & ln).Insert Shift:=xlDown

                If fd.Cells(i, "C").Value <> "Client5" Then
                    fd.Range("A" & i & ":B" & i).Copy fp.Range("A" & ln)
                    fd.Range("D" & i & ":D" & i).Copy fp.Range("C" & ln)
                    fd.Range("H" & i & ":Q" & i).Copy
                    fp.Range("D" & ln).PasteSpecial Paste:=xlPasteValues
                End If
            End If
        End If
    Next i
    fp.Cells(2, "i").Activate
End Sub

ric

Bonjour RIC,

Merci pour ce retour.

Ca fonctionne bien pour le report des colonnes A:D & H:Q.

Par contre, pour l'exclusion du "client5", parfois ca fonctionne bien, parfois j ai un message d'erreur (lorsque je modifie le nom du client dans la feuille "données") :

"erreur d'execution '1004' : La méthodes Activate de la classe Range a échoué.

Quand je fais le débogage, j ai la dernière ligne en seurbrillance : fp.Cells(2, "i").Activate

Par contre le resultat à l'air bon dans la feuille "pers", les nouveaux "client5" sont bien retiré et le "client5" passé "client1" sont bien ajouté.

J'ai un autre pb...je travaille dessus : la mise en forme conditionnelle qui s'applique en feuille"données" devrait être collée dans les feuilles "Test" et "pers".

Alors je sais que nous (tu) avons modifié pour avoir un copie valeur dans la feuille "pers" donc logique qu'il n y ait pas la copie des MFC. Par contre elle devrait apparaitre en feuille "Test"...

Je vais donc essayé de faire un copier/coller dans les colonnes "A,B et C" et un collé valeur dans les colonnes "D à M" dans la feuille "pers"

Je comprend en gros la macro, mais peux tu m'expliquer les lignes suivantes (ce que je n ai pas reussi à faire) :

If fp.Cells(lgn + 2, 2) = "" Then
cell.Offset(1, 0).Resize(1, 18).Insert Shift:=xlDown
fd.Range("A2:R2").Copy
cell.Offset(2, 0).Resize(1, 18).Insert Shift:=xlDown
fp.Cells(lgn + 1, 1).Offset(1, 2).Delete Shift:=xlToLeft
fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft
fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft
fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft

Je vais donc essayé de faire un copier/coller dans les colonnes "A,B et C" et un collé valeur dans les colonnes "D à M" dans la feuille "pers"

desole tu l avais deja fait.

Bonjour,

Après le traitement dans la feuille "pers" > des cellules restaient sélectionnées > j'ai donc ajouté "fp.Cells(2, "i").Activate" pour sélectionné la cellule "i2" afin de désélectionner les autres > ici ça fonctionne > mais, tu as une erreur > supprime ou met en commentaire "fp.Cells(2, "i").Activate" > tout simplement ...

If fp.Cells(lgn + 2, 2) = "" Then                           ' si cette cellule est vide
cell.Offset(1, 0).Resize(1, 18).Insert Shift:=xlDown        ' insérer une ligne
fd.Range("A2:R2").Copy                                      ' prépare la copie d'une plage sur la feuille "données"
cell.Offset(2, 0).Resize(1, 18).Insert Shift:=xlDown        ' coller cette plage en insérant une ligne
fp.Cells(lgn + 1, 1).Offset(1, 2).Delete Shift:=xlToLeft    ' supprime cellule de la colonne C ("Client") (ainsi D devient C)
fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft    ' supprime Cellule de la colonne D ("Titulaire / Interim") (ainsi E devient D)
fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft    ' supprime Cellule de la colonne D ("Poste") (ainsi E devient D)
fp.Cells(lgn + 1, 1).Offset(1, 3).Delete Shift:=xlToLeft    ' supprime Cellule de la colonne D ("Equipe") (ainsi E devient D)

Les 3 dernières > je n'ai pas trouvé rapidement comment sélectionner 3 cellules pour les supprimer en lot ...

Si tu as 2 écrans > un pas à pas sur le code te permettrait de voir cela en action ...

J'ai donc opté pour supprimer 3 fois de suite 1 cellule > ce qui revient au même > s'il y avait des dizaines de milliers de lignes à traiter > le temps d'exécution en souffrirait > il faudrait trouver autre chose ...

Pour la MFC > en supprimant la colonne "Titulaire / Interim" sur la feuille "pers" > le critère disparaissant > l'exécution ne se fait pas > la condition de traitement ne s'avère pas ...

Car avec une MFC, la couleur n'est pas dans la cellule > c'est un masque sur la cellule...

Je vais regarder pour ne pas supprimer cette colonne > mais simplement la masquer > si ça fonctionne et que ce n'est pas un souci pour toi qu'une colonne soit masquée dans la feuille "pers" ...

ric

Merci de ton retour, j ai bien compris pour la feuille "pers", par contre la mfc devrait s appliquer sur la feuille "Test" non ?

J'ai donc essayé d'imbriquer une nouvelle mfc pour la feuille "Test" sans succès.

J'ai egalement essayer de faire une 2eme macro mfcTest mais sans succès egalement

Dans les 2 cas la mfc ne fonctionné plus même dans la feuille "données"...

Bonjour,

Pour la MFC >

.FormatConditions.Add Type:=xlExpression, Formula1:="=$E3=""Supplay"""
.FormatConditions.Add Type:=xlExpression, Formula1:="=$E3=""RAS"""
.FormatConditions.Add Type:=xlExpression, Formula1:="=$E3=""Crit"""
.FormatConditions.Add Type:=xlExpression, Formula1:="=$E3=""Randstad"""
.FormatConditions.Add Type:=xlExpression, Formula1:="=$E3=""CDI"""
.FormatConditions.Add Type:=xlExpression, Formula1:="=$E3=""CDD"""

Pour la macro "PlanningPers" > si masquer les colonnes est "acceptable" > la MFC suit correctement ...

Le petit irritant qu'il subsiste est la largeur résiduelle de champs fusionnés (RAS, Supplay, etc) ...

J'ai augmenté leur largeur > en fait il faut leur donner 4 colonnes de plus que la largeur désirée une fois le traitement terminé > puisque l'on masque 4 colonnes ...

Vois si cela convient ...

ric

Bonjour,

J'ai continué mes recherches et je crois avoir avancé une information erronée concernant la MFC ...

Je reviens avec une nouvelle version de la macro "PlanningPers" ...

ric

Merci,

Ca me va tres bien avec les colonnes masquées, c'est une bonne idée....je suppose que c'est pour la meme raison que les mfc ne fonctionnent pas sur la feuille "Test" ? Parce qui'il y a une colonne que l'on ne reporte pas ?

Bonjour,

Exact > mais j'ai trouvé comment lire la couleur obtenue d'une MFC d'une cellule ...

Donc, voici une version du fichier où les couleurs suivent sur la feuille "pers" et maintenant sur la feuille "test" ...

Concernant le code de la feuille "pers" > j'ai aussi ajouté la condition d'exclusion "Client5" sur le 1er "IF ..." de la section Report > sinon, l'on se retrouvait avec des lignes vides colorées pour chacune des lignes exclues ...

Je viens d'ajouter la suppression de toutes les MFC des feuilles "test" et "pers" qui ont été importées lors des copies > les MFC de ces feuilles sont maintenant inutiles et alourdissent le fichier inutilement ...

L'on approche >

ric

Ça à l 'air de très bien fonctionner, je te remercie.

Je vais tester avec avec mes vraies données voir s'il n y a pas de problème.

Je reviens vers toi dans tous les cas.

Encore une question bête...habituellement je met une forme et y affecte une macro, là sur le bouton que tu as mis j ai 1 question : peut on le dépalcer ? le mettre quelque part dans la feuille "données" ? si oui comment le deplace t on ?

Bonjour,

Pour déplacer le "bouton de commande" de la feuille "Accueil" à la feuille "données" >

Va dans VBE > dans la feuille "Accueil" > coupe la macro " Private Sub CommandButton1_Click() " > va dans la feuille "données > colle cette macro >

Reviens dans Excel sur la feuille "Accueil" > menu Développeur > clique sur bouton "Mode Création" > maintenant, clique Droit sur le "bouton de commande" à déplacer > Couper > va dans la feuille "données" > Coller > clique à nouveau sur "Mode Création" afin de le désactiver > Woualla > le bouton est à nouveau opérationnel ...

Clique à nouveau sur le bouton "Mode Création" > clique droit sur le "bouton de commande" > Propriétés > là, tu peux le personnaliser ...

ric

Bonjour RIC,

Merci pour tes conseils et ton travail, le fichier fonctionne apparemment très bien.

Juste un pb avec les mfc sur le report dans les feuilles "Test" et "pers" : dans la feuille "données", la colonne "Titulaire / interim" est bien en couleur mais sur le report ca devient la colonne "Lieu de travail" dans la feuille "Test" et "pers". Mais ce n'est pas tres important, je vais regarder ca.

Par contre, j aimerai avoir ton avis sur ceci : est ce possible de créer un bouton "enregistrer" pour faire une copie valeur de ce fichier dans un dossier portant le n° de semaine par exemple....quelque chose du genre.

Sais tu si cela existe ?

Rechercher des sujets similaires à "erreur syntaxe bva"