Boucle décalage gauche 2 lignes
Bonjour
Bien que des logiciels payant faisant ça mieux existent, mon responsable souhaite que je développe sous excel une base de donnée RH avec en final une fiche par employé.
Bref là où je bloque, j'aimerai que de la base de donnée (feuille Comp.Current) créer la fiche de l'employé (feuille 1).
1. Macro Insérer Photo = ok
2. fonction index = ok
3. macro masquer ligne ou colonne = ok mais c'est pas tout à fait mon besoin
PB: (que j'ai essayer de résoudre en parourant le forum, la fonction décaler mais pas tout à fait ce que je veux)
si Mr N à les compétences A, E, J avec les dates d'expiration qui correspondent. Je souhaite donc que lors du transfert vers la fiche de l'employé seules ses compétences acquises s'affichent mais en plus soient stockées à partir de la colonne A.
Soit CompA=Ax, Dateexpiration CompA=Bx, CompE=Cx, Dateexpiration CompE=Dx......(voir fichier joint)
En gros je n'arrive pas à créer une bouche qui dès que le niveau d'une compétence est nulle celle-ci ne s'affiche pas et qu'en plus cela décale les suivantes vers la gauche.
En espérant avoir été clair et que le fichier le soit aussi.
Merci de votre aide
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Bonjour
Merci pour ton aide.
Donc même si je pensais que le copy past n'était pas le moyen le plus simple/léger il me convient.
j'ai lu des article sur dictionnaire ou autre et comprends pas tout.
Bref, c'est presque ce que je veux en fait je souhaite garder la colonne niveau de compétence et la date d'expiration associé.
Donc si pas de certificat, pas de date de fin et les 2 colonnes ne seront pas reportées, si certificat alors les 2 colonnes sont à reportées.
si pas possible je peux concatener.
donc je commence par chercher à comprendre ce que tu as fait et pis si j'ai des question je reviendrai.
merci
Bonjour
rafton a écrit :si certificat alors les 2 colonnes sont à reportées.
Qu'à cela ne tienne ! Voilà la version avec les 2 colonnes :
hum j'ai pas encore essayé ta proposition mais j'ai trouvé au lieu d'un pas de 2 j'en fais un de 1.
Bon la suite trouver comment récupérer ces données et ce système sans modifier la mise en page cible.
D'ailleurs pas réussi à refaire le titre/en-tête qui se met tout bien comme il faut.
Question de temps recherche je pense. mais vais y arriver
Merci pour ton aide
Merci GMB pour ton aide j'avais de mon côté fait ce code:
Sub Comp_gmb()
'If Selection.Count > 1 Then End
ln = Range("A1") + 3
Application.ScreenUpdating = False
Range("A19").CurrentRegion.Offset(0, 0).Clear
With Sheets("Current Skill")
i = 0
For col = 11 To 36 Step 1
If .Cells(ln, col) <> "00/01/1900" And .Cells(ln, col) <> 0 Then
coln = Cells(19, Cells(19, Columns.Count).End(xlToLeft).Column).Column
.Cells(3, col).Copy
Cells(19, coln + i).PasteSpecial xlPasteValues
.Cells(ln, col).Copy
Cells(20, coln + i).PasteSpecial xlPasteAll
i = 1
End If
Next col
End With
Rows("18:18").HorizontalAlignment = xlLeft
Range(Cells(18, "A"), Cells(18, coln + 1)).HorizontalAlignment = xlCenterAcrossSelection
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Comme tu l'auras compris le nom des onglets source et cible ont changé, tout comme certaines lignes départ et fin.
Donc cela marche bien sauf pour la ligne titre : "official External....." qui ne s'affiche pas et donc ne fait pas la mise en forme comme dans ton exemple. Elle est où la couille dans le paté dans la macro que j'ai adaptée ?
Ensuite, comment faire pour conserver la mise en forme cible avec les valeurs de la source ?
Là j'ai voulu jouer avec PasteSpecial xlPasteAll ou values et ça marche la première fois mais pas les suivantes ?
Merci pour ton aide et je cherche de mon côté.
Bonjour
rafton a écrit :cela marche bien sauf pour la ligne titre : "official External....." qui ne s'affiche p
Le code me semble bon mais sans le fichier qui va avec , je ne peux rien dire de plus.
Si tu ne trouves pas, envoie moi-le.
comment faire pour conserver la mise en forme cible avec les valeurs de la source
Pour garder le format existant sur les cellules de destination, il faut faire un ''xlPasteValues''
Mais tu perdras les formules de la cellule copiée pour ne coller que la valeur qu'elle contient
Si tu fais un ''xlPasteAll'', tu colles le format et la formule de la cellule copiée.
Si tu veux le format et la valeur (pas la formule qui pourrait être par exemple ''= A10*C3'') alors il te faut répéter l'instruction, une fois avec ''xlPasteValues'' et une deuxième fois avec ''xlPasteFormats''
OK ?
Merci GMB
je reviens que maintenant mais j'ai trouvé mon erreur et tout fonctionne parfaitement maintenant.
Merci pour ton aide en tout cas cela m'a bien servi.