Macro pour remplacer valeur dans une plage en fonction du titre de colonne

Bonjour,

Dans mon fichier j'ai une ligne par client avec par mois un nombre de trajet, l'idée serait de remplir les cases début et fin( colonnes F et G) qui seront les bornes de la plage ou seront remplacés les valeurs par la valeur en colonne H.
je pense à une macro pour que ca écrase les anciennes données et que je puisse faire la manip sur une ligne plusieurs fois.

j'espère être clair dans mon explication, je ne sais pas me servir des macros

d'avance merci

Cordialement

5classeur2.xlsx (9.63 Ko)

Salut,

Je ne suis pas certain d'avoir compris ta demande. Dans le fichier ci-joint, si tu modifies des données dans les colonnes F à H - pour autant qu'elles soient toutes renseignées - les mois correspondants des colonnes I à T prennent la valeur indiquée en colonne H.

Pour bien te montrer cela, les dernières modifications s'affichent en jaune.

Si tu indiques un mois plus éloigné en premier, un message d'erreur apparait.

Si ce n'est pas ce que tu attendais, tente d'expliquer mieux ta demande.

Cordialement.

7classeur-v1.xlsm (17.85 Ko)

Hello à tous,

Une variante :

Sub RemplacePeriode()
    Dim bytFirstRow As Byte, bytColMonthStart As Byte, bytColMonthEnd As Byte
    Dim lngLastRow&, lngTmpRow&
    Dim strMonthStart$, strMonthEnd$
    Dim Trouve As Range, PlageDeRecherche As Range
    Dim intValeur%
    bytFirstRow = 2 'ici premiere ligne des données
    lngLastRow = Range("A" & Rows.Count).End(xlUp).Row 'Derniere ligne des données
    Set PlageDeRecherche = Range("I" & (bytFirstRow - 1) & ":T" & (bytFirstRow - 1)) 'Plage des mois
    For lngTmpRow = bytFirstRow To lngLastRow 'Boucle sur toutes les données
        strMonthStart$ = Cells(lngTmpRow, "F") 'stock début de période
        strMonthEnd$ = Cells(lngTmpRow, "G") 'stock fin de période
        intValeur% = Cells(lngTmpRow, "H") 'stock nouvelle valeur
        If Not strMonthStart$ = vbNullString And Not strMonthEnd$ = vbNullString Then 'si toutes les périodes sont renseignées
            Set Trouve = PlageDeRecherche.Cells.Find(what:=strMonthStart$, LookAt:=xlWhole, LookIn:=xlValues) 'cherche le mois de debut
            If Not Trouve Is Nothing Then bytColMonthStart = Trouve.Column Else bytColMonthStart = 0 'recupere colonne fin
            Set Trouve = PlageDeRecherche.Cells.Find(what:=strMonthEnd$, LookAt:=xlWhole, LookIn:=xlValues) 'cherche le mois de fin
            If Not Trouve Is Nothing Then bytColMonthEnd = Trouve.Column Else bytColMonthEnd = 0 'recupere colonne fin
            If bytColMonthStart <> 0 And bytColMonthEnd <> 0 Then 'Test si tout est ok par sécu
                Range(Cells(lngTmpRow, bytColMonthStart), Cells(lngTmpRow, bytColMonthEnd)).Value = intValeur% 'Remplace les valeurs
            End If
        End If
    Next lngTmpRow
    Set Trouve = Nothing
    Set PlageDeRecherche = Nothing
End Sub

Bonjour Yvouille, Bonjour Rag02700,

Merci beaucoup c'est exactement ce que je cherchais !

J'ai une autre demande dans le même genre, pensez vous qu'à la place d'avoir une valeur qui remplace, avoir un pourcentage qui s'applique sur la valeur présente?

Encore merci pour votre retour rapide!

Cordialement

Salut Zymon,

Ce serait déjà bien que tu nous indiques laquelle des deux solutions te convient. Nous t'avons proposé deux trucs assez différents ; je présume que c'est soit l'un soit l'autre et non pas les deux.

Par rapport à la solution choisie, donne un exemple du calcul de % que tu souhaiterais obtenir et dis avec précision où il devrait se placer.

Amicalement.

Bonjour Yvouille,

Désolé pour mon retour tardif,

Je suis parti sur la solution de Rag, la tienne fonctionnait très bien aussi mais elle s'active tout de suite donc pour éviter une erreur je préfère activé avec un raccourci ctrl+ une fois que j'ai renseigné toutes mes modifications, mais j'ai repris l'idée de la liste déroulante pour les mois.

Pour l'idée avec les pourcentages ca serait le même fonctionnement simplement dans la case valeur si je mets 50% ainsi dans les mois sélectionnés mes valeurs sont divisé par 2

Cordialement

1classeur2.xlsx (11.15 Ko)
Rechercher des sujets similaires à "macro remplacer valeur plage fonction titre colonne"