Remplacer la valeur d'une cellule par l'entête de sa colonne

Fermé
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016
- 9 nov. 2016 à 16:36
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016
- 14 nov. 2016 à 10:57
Bonjour à tous,

je me retrouve face à un problème que je n'arrive pas à résoudre!
J'ai un tableau qui peut se résumer brièvement comme ceci :

A = identifiant B=nb jours de charge C=01/10/2016 D=02/10/2016
AMER 1,5 1,5
PDUR 2 2

Je souhaiterais réaliser une macro qui, pour chaque ligne, quand elle trouve une valeur >0 à partir de la colonne C, elle remplace cette valeur par son entête de colonne.
Dans l'exemple la macro remplacerait donc dans les colonnes C et D les valeurs 1,5 par 01/10/2016 et 2 par 02/10/2016.

Si vous aviez un début de piste ce serait formidable car je tourne en rond depuis 2 jours !

Merci beaucoup

4 réponses

ccm81
Messages postés
10356
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 juin 2022
2 298
9 nov. 2016 à 17:22
Bonjour

Ce n'est pas très clair
Peux tu envoyer un bout de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu

1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

Cdlmnt
0
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016

10 nov. 2016 à 09:31
Bonjour Ccm81,

Merci pour la procédure :)
Voila le lien de mon fichier du coup :

https://www.cjoint.com/c/FKkiEjr8S0R

J'ai mis quelques explications dans le document j'espère que ca sera compréhensible.
Car ce qui me semble limpide ne l'est pas forcément pour quelqu'un d'autre.

Merci :)
0
ccm81
Messages postés
10356
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 juin 2022
2 298
10 nov. 2016 à 11:42
Si j'ai compris
Feuille Feuil1 en J11 tu veux récupérer la liste des 3 dates
10/10/2016 11/10/2016 14/10/2016
Si c'est çà, il faudra certainement passer par une fonction personnalisée (macro)
tu dis
0
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016

10 nov. 2016 à 11:53
Je veux effectivement récupérer les dates mais je voudrais que :
-10/10/2016 s'affiche en T11 à la place de 0,13
-11/10/2016 s'affiche en U11 à la place de 0,38
-14/10/2016 s'affiche en X11 à la place de 0,25.

Je suis partie sur ce code, mais je n'arrive pas à l'adapter à mon tableau :

Sub Test2()

Dim iNbreDeColonnes As Integer
Dim iNombreDeLignes As Integer
Dim iColonne As Integer
Dim iHauteurColonne As Integer
Dim strTitreColonne As String

Worksheets("Feuil1").Activate 'On se positionne sur le jeu de donnees
iNbreDeColonnes = Range("A10").End(xlToRight).Column 'On compte le nombre de colonnes du jeu de données
iNombreDeLignes = Range("A10").End(xlDown).Row 'On le nombre de lignes du jeu de données

iHauteurColonne = iNombreDeLignes - 1 'Hauteur d'une colonne sans le titre

For iColonne = 11 To 41 'De la colonne 11 à 41

strTitreColonne = Cells(1, iColonne).Value 'Je récupère le titre de la colonne active


Worksheets("Feuil1").Cells(iNombreDeLignes, iNbreDeColonnes).Value = strTitreColonne 'Je donne comme nom à la plage de valeurs le titre de la colonne active


Next iColonne

End Sub


Et donc je galère au niveau de la ligne :
Worksheets("Feuil1").Cells(iNombreDeLignes, iNbreDeColonnes).Value = strTitreColonne

Car en fait cette ligne doit dire "pour toute les cellules non vides remplacer la valeur par le titre de la colonne.

Tu arrives à cerner un peu plus ma demande ?
0
ccm81
Messages postés
10356
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 juin 2022
2 298
10 nov. 2016 à 12:23
En bref, tu veux écraser les cellules non vides de la plage K10:AO69 (pour octobre) par l'entête de colonne (date ligne 10)
0
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016

10 nov. 2016 à 12:28
yes c'est tout à fait ça !
0
ccm81
Messages postés
10356
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
26 juin 2022
2 298
10 nov. 2016 à 13:33
Essaies ceci
Const lideb = 10
Const codeb = 11

Public Sub OK()
Dim co As Long, cofin As Long, li As Long, lifin As Long, d As Date
With ActiveSheet
d = .Cells(lideb, codeb)
If Month(d) = 12 Then
df = CDate(Day(d) & "/" & 1 & "/" & Year(d) + 1)
Else
df = CDate(Day(d) & "/" & Month(d) + 1 & "/" & Year(d))
End If
lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
cofin = codeb + df - d - 1
For li = lideb + 1 To lifin
For co = codeb To cofin
If .Cells(li, co).Value <> "" Then
.Cells(li, co).Value = .Cells(lideb, co).Value
.Cells(li, co).NumberFormat = "dd/mm/yyyy"
End If
Next co
Next li
End With
End Sub

Une remarque en passant. Tu devrais mettre la directive
Option Explicit
en début de module, ça t'obligerait à déclarer toutes les variables utilisées,

Cdlmnt
0
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016

10 nov. 2016 à 16:51
dacc, je ne savais pas pour Option Explicit (je débute en VBA). Merci du conseil.

Je vais regarder ta macro dans le weekend, et je te dis ce que ça donne lundi.

Merci pour ton aide !
0
KBA3103
Messages postés
7
Date d'inscription
mercredi 2 novembre 2016
Statut
Membre
Dernière intervention
23 novembre 2016

14 nov. 2016 à 10:57
Bonjour CCM81,

J'ai regardé ton code ce weekend mais il ne fonctionne pas, je n'ai pas réussi à l'adapter.
Par contre j'ai trouvé la solution à mon problème!
Voici un nouveau fichier dans lequel j'ai fait le test :
https://www.cjoint.com/c/FKoj2UGJ0RR

C'est au niveau du bouton 4 que j'arrive à récupérer mes dates à la place de mes charges.

Merci pour ton aide en tout cas !
0