Copier une valeur si valeur trouvée

titiborregan5

XLDnaute Accro
Bonjour à tous,
j'ai une question toute bête mais pour laquelle je n'ai pas trouvé la solution sur le forum :s

J'ai une référence en A3 : Février on va dire
Une valeur qui lui correspond en B3: 20 par exemple

Dans G3:G15 j'ai les mois : Janvier - Février - Mars - etc...

je souhaiterai que si la macro trouve A3 dans G3:G15, il me copie la valeur dans la colonne H (décalage à droite de 1) trouvée en B3.

Merci de vos lumières parce que là je bloque sur qqch de tout simple!!!


Bonne journée

Thibault
 

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

BONJOUR CATRICE
le mot de passe se met automatiquement pour l'enlever"david" ou macro 10 pour toutes les feuilles
tableau dans la colone a met le en colonne b alors peut il nous servir pour renseigner la feuille gestion absence(2009/2010/2011)
justine
 

Catrice

XLDnaute Barbatruc
Re : Copier une valeur si valeur trouvée

Re,

Pour le mot de passe, j'avais vu mais oublié. J'ai désactivé les macro car il y a des AutoOpen qui mettent la pagaille.

Je ne comprend (presque) rien de ce que tu veux faire.

En partant de ton Post # 58.
Probleme 1 :
Dans quel onglet faut il prendre les B2, G2 etc ?

Probleme 2 :
Quel tableau doit servir à remplir le planning ?
Celui de Base ? il n'y a pas de nom ?! ...

Tu veux donc créer un planning hebdo, cliquer sur un bouton et que ça remplisse le planning Annuel conrrespondant ?

NB - Il y a un quantité de module incroyable dans ce fichier. Il y en a des vides qu'il faudrait supprimer ...
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Copier une valeur si valeur trouvée

Bonsoir,

Ci-dessous un code qui permet de remplir les onglets "ABS aaaa" en fonction du tableau que tu définis avec MaFeuille et MaPlage.

Pour que cela fontionne il faut IMPERATIVEMENT que tu mettes dans la colonne A des onglets "ABS aaaa" cette formule :
=DATE(ANNEE(A2);MOIS(A2)+1;1)
Où A2 doit etre remplacé à chaque fois par la date précédente.
Ca permet d'obtenir le 1 jour de chaque mois.
La formule qu'il y avait donnait un resultat un peu farfelu (2 fois le mois d'octobre par exemple ;))

Il faut également faire attention à l'orthographe des noms.
régine <> regine !!

La macro cherche automatiquement le bon onglet et le trouve que si son nom est de la forme "ABS aaaa".

Code:
Sub TestCat()
MaFeuille = "mise a jour planning" 'Seuls choses à changer (Feuille du planning)
MaPlage = "C20:I30" 'Seuls choses à changer (Plage du planning)
'----------------------------
With Sheets(MaFeuille)
    Set MaZone = .Range(MaPlage)
    Onglet = "ABS " & Format(MaZone.Resize(1, 1).Offset(-1, 0), "yyyy")
    MesCrit = Array("21h15/6h15", "tn", "REPOS", "rp", "CONGES", "cp")
'----------------------------
    For Each X In MaZone
        MaDate = .Cells(MaZone.Offset(-1, 0).Resize(1).Row, X.Column).Value
        With Sheets(Onglet)
            Lig1 = Application.Match(DateSerial(Year(MaDate), Month(MaDate), 1) * 1, .Range("A1:A400"), 0) + 1 'Ligne où se trouve la date (mois) recherchée
            Col1 = Application.Match(MaDate * 1, .Cells(Lig1, 1).Resize(1, 32), 0) 'Colonne où se trouve la date (jour) recherché
        End With
        LeNom = .Cells(X.Row, MaZone.Column + MaZone.Columns.Count).Value 'Nom de la ligne en cours (X)
        With Sheets(Onglet)
            Lig2 = Application.Match(LeNom, Sheets(Onglet).Cells(Lig1 + 1, 1).Resize(14, 1), 0) 'offset du nom dans le mois recherché
            toto = X.Value
            MonCrit = Application.Match(X.Value, MesCrit, 0)
            If Not IsError(Lig2) Then
                If Not IsError(MonCrit) Then
                    .Cells(Lig1 + Lig2, Col1).Value = MesCrit(MonCrit)
                Else
                    .Cells(Lig1 + Lig2, Col1).Value = "tj"
                End If
            End If
        End With
    Next
End With
End Sub
 

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

bonjour catrice
pour le probleme 1(sauvegarde et impression"
il doit prendre comme nom de fichier b2-d2 et g2 de la feuille plannning impression


quand je suis sur la feuille planning impression et que je clique sur sauvegarde(enregistrement et impression automatique)le fichier doit s’enregistrer sous « semaine 46 du lun 09-11-2011 »soit cellule b2-d2-du-g2 hors la j’ai un probleme avec cette macro car ca m’enregistre le fichier nommer « du » voici la macro
Application.ScreenUpdating = False

Sheets(Array("PLANNING IMPRESSION", "mise a jour planning", "liste du personel")) _
.Copy
ChDir "C:\archive planning"
ActiveWorkbook.SaveAs chemin & [b2] & " " & [d2] & " " & "du" & " " & Format([u2], "ddd dd-mm-yyyy") & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

ActiveWorkbook.Close


Sheets("mise a jour planning").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Sheets("PLANNING IMPRESSION").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2



Sheets("accueil").Select
Application.DisplayFullScreen = True
Range("a1").Select

pour le probleme 2
c'est confus pour moi c'est informations je suis novice peux tu me donner le lien cijoint si tu a modifier sur mon fichier ou me l'envoyer en mp svp
merci
justine
 

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

Tu veux donc créer un planning hebdo, cliquer sur un bouton et que ça remplisse le planning Annuel conrrespondant ?

NB - Il y a un quantité de module incroyable dans ce fichier. Il y en a des vides qu'il faudrait supprimer ...


oui c'est bien ca catrice
comme tu est nettement plus callé que moi la dessus tu as carte blanche pour modifier le planning je te fais confiance
si tu arrive a faire ce que je demande
justine
 

Catrice

XLDnaute Barbatruc
Re : Copier une valeur si valeur trouvée

Bonsoir,

J'ai mis ici : http://cjoint.com/?iBbOz8pbkQ
Un fichier modifié avec :
- les bonnes formules dans ABS 2009 pour les dates
- regine remplacé par régine
- "ABS 2010 " remplacé par "ABS 2010" (sans espace dans le nom d'onglet, gros risque d'erreur)
- ton code impression corrigé qui devrait fontionner (à tester)
- un code qui permet de mettre à jour le planning ABS (mais je ne sais pas si c'est tres exploitable dans ton cas de figure.A tester. A quoi sert CONGES dans les codes puisque il y a toujours des remplaçants ?)
- J'ai supprimé les Modules inutiles.

Bons tests...

Pourquoi dupliquer le planning pour l'impression ? Ca alourdi le fichier (deja bien chargé) inutilement.
 
Dernière édition:

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

:)Catrice:)
un seul mot excelent
tous fonctionne impecable depuis le temps que je travaille dessus
un grand merci

2 petites chose
1)quand la personne est en conges dans le tableau abs la cellule est vide peut on mettre a la place "cp"
pour lundi,mardi,mercredi,jeudi,vendredi
et "rp" pour samedi et dimanche
2)je crée un bouton acces base sur feuille accueil
aurais yu un code avec message box ou userform pour autoriser l'ouverture de la page par mot de passe'prive'par exemple

encore merci catrice
longue vie au forum
justine
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
 

Catrice

XLDnaute Barbatruc
Re : Copier une valeur si valeur trouvée

Re,

Pour le probleme 1, je vais regarder mais c'est une macro differente car la mienne ne traite pas les congés. Va falloir voir comment l'inserer.

Pour le probleme 2, il faudrait que tu fasses un autre Fil.
C'est une autre question.
Essaie de faire une demande générique.
 
Dernière édition:

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

bonjour Catrice
desolé du retard pour la reponse (j'etais en formation)
ton code fonctionne super bien c'est tout a fait ce que je voulais
par contre il y a un petit souci lorsque la semaine est a cheval sur 2 mois exemple semaine lundi 23 fevrier au dimanche 1 mars 2009 il ecrit bien la valeur jusqu'au 28 fevrier mais au lieu de remplir la colonne pour le 1er mars il me remplie la colonne de droite juste apres le 28 fevrier alors que dans cette colonne il n'y a pas de date de rentrée
je retrouve cette meme erreur pour la semaine du 30 mars au 5 avril 2009
regarde la piece jointe
encore merci pour ton aide
justine(l'eleve qui peut etre un jour depassera le maitre....)

ps j'ai modifier le nombre de ligne a prendre en compte (supprimer14 et j'ai mis 11)
pour ne pas mettre les remplacements en cp lorsqu' il ne travaille pas
ca c'est bon
seul probleme a regler quand la semaine est a cheval sur 2 mois
 

Pièces jointes

  • feuille abs test.zip
    32.5 KB · Affichages: 51

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

bonjour catrice
la macro s'arrette sur cette ligne soulignée en rouge

Sub TestCat()
MaFeuille = "mise a jour planning" 'Seules choses à changer (Feuille du planning)
MaPlage = "C20:I30" 'Seules choses à changer (Plage du planning)
NbLig = 14 'Nombre de lignes (nb de noms à traiter)
'----------------------------
With Sheets(MaFeuille)
Set MaZone = .Range(MaPlage)
Onglet = "ABS " & Format(MaZone.Resize(1, 1).Offset(-1, 0), "yyyy")
MesCrit = Array("21h15/6h15", "tn", "REPOS", "rp", "CONGES", "cp")
'----------Message-----------
If MsgBox("Attention le planning du " & MaZone.Offset(-1, 0).Resize(1, 1) & " va etre mis à jour." & Chr(10) & "Etes-vous sûr ?", vbOKCancel) = 2 Then Exit Sub
'--------- Traitement congés -----------
MaDate = .Range("C7").Value
With Sheets(Onglet)
Lig1 = Application.Match(DateSerial(Year(MaDate), Month(MaDate), 1) * 1, .Range("A1:A400"), 0) + 1 'Ligne où se trouve la date (mois) recherchée
Col1 = Application.Match(MaDate * 1, .Cells(Lig1, 1).Resize(1, 32), 0) 'Colonne où se trouve la date (jour) recherché
.Cells(Lig1 + 1, Col1).Resize(NbLig, 5).Value = "cp"
.Cells(Lig1 + 1, Col1 + 5).Resize(NbLig, 2).Value = "rp"
End With
'---------------------------------------
For Each X In MaZone
MaDate = .Cells(MaZone.Offset(-1, 0).Resize(1).Row, X.Column).Value
With Sheets(Onglet)
Lig1 = Application.Match(DateSerial(Year(MaDate), Month(MaDate), 1) * 1, .Range("A1:A400"), 0) + 1 'Ligne où se trouve la date (mois) recherchée
Col1 = Application.Match(MaDate * 1, .Cells(Lig1, 1).Resize(1, 32), 0) 'Colonne où se trouve la date (jour) recherché
End With
LeNom = .Cells(X.Row, MaZone.Column + MaZone.Columns.Count).Value 'Nom de la ligne en cours (X)
With Sheets(Onglet)
Lig2 = Application.Match(LeNom, Sheets(Onglet).Cells(Lig1 + 1, 1).Resize(14, 1), 0) 'offset du nom dans le mois recherché
toto = X.Value
MonCrit = Application.Match(X.Value, MesCrit, 0)
If Not IsError(Lig2) Then
If Not IsError(MonCrit) Then
.Cells(Lig1 + Lig2, Col1).Value = MesCrit(MonCrit)
Else
.Cells(Lig1 + Lig2, Col1).Value = "tj"
End If
End If
End With
Next
End With
End Sub
 

justine62000

XLDnaute Occasionnel
Re : Copier une valeur si valeur trouvée

bonjour la modification que j'apporte est sur cette ligne je met 11 a la place de 14 pour ne pas remplir les case cp pour les remplacemennt
NbLig = 14 'Nombre de lignes (nb de noms à traiter)
modifier en
NbLig = 11 'Nombre de lignes (nb de noms à traiter)
sans quoi ton code est super c'est tout a fait ce que je voulais
j'attends donc ta modification avec impatience
justine
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa