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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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))
 
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
 
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
 
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
 
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

Tout est bien qui finit bien. 🙂
 
Le Forum,
Merci Sylvanu,
En effet, comme ce n'est pas obligatoire, et en plus oui d'autres corrections peuvent être proposées pour me simplifier la codification en place ; je laisse donc la conversation ouverte.
Merci beaucoup,
Cordialement,
Webperegrino
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour