XL 2016 Bien rapatrier des saisies sur cinq colonnes par jour en feuille voisine

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,

Trois semaines de recherches et d’essais en tous genres …. En vain !
Ma programmation VBA coince pour placer correctement les saisies d’une première feuille en résultats dans une deuxième feuille.

Voici le fichier joint. Dans la première feuille, au « kilomètre et en une colonne par journée », sont saisis :
  • un lieu
  • un horaire de début-fin (les deux premiers chiffres vont nous servir)
  • un code lieu
  • un ou deux prénoms
… et ainsi de suite.

Un BOUTON ROUGE « Rapatrier dans Feuille Disponibilité » reportera en Feuil2 l’ensemble de la saisie de la première feuille dans 5 colonnes par journée.
Dans cette 2ème Feuille de destination, c’est le début de l’Horaire des cellules n°2 des pavés des groupes de la première feuille qui est utilisé pour définir le numéro de classement du Poste en une des colonnes de 1 à 5 :
  • avant 14 h (jusqu’à 13 h 59)
  • entre 14 h et avant 16 h
  • entre 16 h et avant 18 h
  • entre 18 h et avant 20 h (jusqu’à 19 h 59)
  • après 20 h.
Les lignes VBA fonctionnent parfaitement jusqu’au moment de remplir la colonne n° 3, et cela pour chaque journée.
J’ai beau faire des essais (deux présentations différentes dans la programmation ci-jointe) ma colonne n° 3 me place des résultats « doublons de résultats » déjà bien placés dans les autres colonnes.

Merci de vous pencher sur mon problème et de bien vouloir m’aider en m’indiquant comment programmer cette colonne 3 dans cette deuxième feuille appelée « Disponibilité ».

Je semble si près du but… If GVal >= 18 And GVal < 20 Then Pos = 3 m'empêche de dormir...

Cordialement à tous,

Webperegrino
 

Pièces jointes

  • RAPATRIER DE PLAN VERS DISPO.xlsm
    85.9 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Webperegrino,
Juste une question :
GVal = Left(PL.Cells(yPL + 1, xPl), 2) vous renvoie une chaine de caractères, ensuite vous la tester par rapport à des nombres. Ce qui peut poser des soucis.
Ne vaudrait il pas convertir cette chaine en nombres avec :
VB:
GVal = Val(Left(PL.Cells(yPL + 1, xPl), 2))
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Sylvanu, pas mieux apparemment avec Val.
J'ai aussi essayé avec "CInt()" et même "CLng()" et... pas mieux qu'avec "Val()" ; toujours des doublons de report dans les colonnes 3.
Ce qui est étrange c'est que les colonnes 1,2, 4 et 5 réagissent bien aux lignes VBA, même sans "Val()".
Je continue aussi à chercher de mon côté,
Cordialement
Webperegrino
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Peut-être un soucis avec cet horaire.

1112234 ou 5 ?????555
MATIN08:00 - 13:0011:00 - 14:00MIDI14:00 - 16:0016:00 - 18:0018:00 - 21:00SOIR20:30 - 01:3021:00 - 01:30
MATIN08:0011:00MIDI14:0016:0018:00SOIR20:3021:00
MATIN13:0014:00MIDI16:0018:0021:00SOIR01:3001:30

JHA
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Sylvanu,
Bonjour JHA,
La codification me prépare bien la plage 18:00 - 21:00 en colonne 4.
J'avais vérifié cela avec une pré-codification en feuille 1 pour voir comment cela réagissait avec résultats mis en colonne L et colonne N : c'était bien la colonne 4 la réceptrice de cette plage. Exemple cellule L88 et cellule N88.
Donc normalement ces plages "18:00 - 21:00" sont reproduites en doublons en colonne 3 et ne devraient pas y être.
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum
Sylvanu, JHA, Oneida,
Merci pour vos interventions !
Sans vous en rendre compte, vous venez de m'orienter plus bas dans ma codification VBA.

Il manquait une ligne (ci-après) pour bien gérer les cellules qui n'avaient pas d'horaire.
C'est donc la suite VBA qui perturbait tout dans la colonne 3 des destinations.

Le fichier corrigé en pièce jointe.
Tout semble parfait maintenant, après trois semaines de maux de tête avec ces codes !

VB:
'****************************************************************************************************
'*** Partie de VBA qui coinçait SANS LA LIGNE CI-APRÈS pour nettoyer la colonne 3 dans la FEUIL-2 ***
If PL.Cells(yPL, xPl) = "RESTAU" Then
'****************************************************************************************************

Question : comment signaler que cette discussion peut être achevée car une des solutions efficaces vient d'être trouvée ?

Bien cordialement,
Webperegrino
 

Pièces jointes

  • V2_RAPATRIER DE PLAN VERS DISPO.xlsm
    82 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
313 287
Messages
2 096 831
Membres
106 758
dernier inscrit
JM9