reporter une macro a chaque ligne

joeyh

XLDnaute Nouveau
Bonjour,

Voici mon tout premier message sur le forum. j'ai trouvé sur le forum plusieurs messages sur mon thème mais je ne parviens pas à trouver de solution.

Voila, mon problème est simple, je souhaite convertir des codes provenant d'un logiciel de planning en horaire par exemple, S2=17h30-22h30

jusque là j'y parviens. mais si je veux appliquer la macro a toute les lignes (30) je pourrais la recopier 30 fois en changeant la cellule source mais je suis sur qu'il y a un moyen plus simple (boucle?).

soucieux d'apprendre j'aimerais autant que faire ce peut que l'on m'explique la solution.

mieux vaut un exemple que de longs discours, je vous joins le principe de base de mon tableau.

merci par avance
 

Pièces jointes

  • convert planning.xlsm
    15.1 KB · Affichages: 36
  • convert planning.xlsm
    15.1 KB · Affichages: 49
  • convert planning.xlsm
    15.1 KB · Affichages: 41

joss56

XLDnaute Accro
Re : reporter une macro a chaque ligne

Bonsoir,

Chaque Sx correspond à une tranche horaire? Le cas échéant, combien de tranches horaires as-tu?
La première étape pourrait consister à créer un petit tableau récap ; colonne A : les différents Sx et colonne B la tranche horaire correspondante. Ceci fait il sera possible de boucler sur toutes les lignes.
A+

Jocelyn
 

Paf

XLDnaute Barbatruc
Re : reporter une macro a chaque ligne

Bonjour

Voici mon tout premier message sur le forum.
Un premier message qui porte le #2 ??

ci dessous votre macro transformé en function personnalisée, à utiliser comme une fonction "normale" en C2, la plage à saisir sera B2.

Puis 'tirer' la formule vers le bas.

Code:
Function convertplan(plage)
   
    Select Case plage
    Case Is = "s2"             ' codage horaire planiciel
       convertplan = "17h-22h"      ' horaire correspondant
    Case Is = "s5"              ' codage horaire planiciel
       convertplan = "7h15-12h"     'horaire correspondant
       
       '  Case Is = 4         ' condition que je definirai par le futur en tout 34 conditions
  '     commentaire = "Résultat satisfaisant"
  '  Case Is = 3         ' <= si la valeur = 3
  '     commentaire = "Résultat insatisfaisant"
   ' Case Is = 2         ' <= si la valeur = 2
   '    commentaire = "Mauvais résultat"
  '  Case Is = 1         ' <= si la valeur = 1
   '    commentaire = "Résultat exécrable"
  '  Case Else           ' <= si la valeur n'est égale à aucune des valeurs ci-dessus
   '    commentaire = "Aucun résultat"
    End Select

End Function

A+
 

Papou-net

XLDnaute Barbatruc
Re : reporter une macro a chaque ligne

Bonsoir joeyh, et bienvenue sur XLD,
Bonsoir Jocelyn et Paf,

Puisque ma solution est faite et qu'elle est d'une approche différente, je la transmets.

J'utilise la procédure événementielle Change pour une mise à jour dynamique. J'ai intégré les commentaires indispensables à la bonne compréhension pour notre ami joeyh.

Cordialement à tous.
 

Pièces jointes

  • convert planning.xlsm
    15.2 KB · Affichages: 44
  • convert planning.xlsm
    15.2 KB · Affichages: 46
  • convert planning.xlsm
    15.2 KB · Affichages: 47

camarchepas

XLDnaute Barbatruc
Re : reporter une macro a chaque ligne

Bonjour à tous , y'a du People ce soir ...


Voici ma solution :

Code:
Sub new_proc()
Dim Tourne As Long 'Variable utilisée pour l'itération
Dim LigneFin As Long ' Variable utilisée pour définir le maxi de l'itération
'

'Definit la derniére ligne à traiter
LigneFin = Range("B" & Rows.Count).End(xlUp).Row
'Tourne prendra comme valeur 2 à lignefin avec un incrément de 1 à chaque boucle
For Tourne = 2 To LigneFin
 Select Case Range("B" & Tourne)
    Case Is = "s2"
       horaire = "17h-22h"
    Case Is = "s5"
       horaire = "7h15-12h"
 End Select
 Range("C" & Tourne) = horaire
'Ici soit tourne est inférieur à la borne maxi( LigneFin)alors incrémente et repart sous le for de la boucle,
'soit égale ou sup et là sort de la boucle
Next Tourne

End Sub
 

Modeste

XLDnaute Barbatruc
Re : reporter une macro a chaque ligne

Bonsoir Johan, bienvenue dans le monde merveilleux d'Excel :D
Mes hommages à tous les autres :eek:

Un premier message qui porte le #2 ??
Meuh non, le premier message était ici :)


Une version sans macro ... en supposant qu'une "table des correspondances" existe (ici, en M1:N6)
Une simple RECHERCHEV fait le reste ... enfin, si j'ai bien compris!?
 

Pièces jointes

  • correspondance codes (joeyh).xlsx
    9.8 KB · Affichages: 35

joeyh

XLDnaute Nouveau
Re : reporter une macro a chaque ligne

Un premier message qui porte le #2 ??

oui le premier était juste une présentation!!


merci à tous pour la rapidité de vos réponses. Je vois que vous m'avez donné plusieurs réponses et méthodologies!!! j'aime ça car je vais pouvoir chercher à comprendre quels sont les raisonnements.

je teste tout cela, et je vous tiens au courant. (pas avant demain maintenant)

merci encore pour vos formules

Johan
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 715
Messages
2 091 289
Membres
104 837
dernier inscrit
baxx86