Fusionner des cellules

Résolu
Kelhistoire Messages postés 2 Date d'inscription mercredi 19 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014 - 19 nov. 2014 à 17:18
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 20 nov. 2014 à 20:06
Bonjour à tous et désolé s'il existe déjà un poste sur le même sujet mais cela fait un moment que je cherche sans trouver de quoi me convenir. Je m'explique :
J'ai fais un tableau excel de 5 colonnes (de B à F) représentant des plages horaires (8h-12h / 12h-14h / 14h-18h / 18h-20h / 20h-24h)
Chaque ligne correspond à un jour de la semaine (donc 7 lignes de 2 à 8)
Dans les cases de mon tableau de dois écrire le nom de l'agent présent sur site
Par exple "Paul" travail Lundi de 8h-12h et de 12h-14h.
Donc j'écrit "Paul" en B2 ainsi qu'en C2
Ce que je voudrais c'est que si un agent fait deux plages horaires (ou plus) consécutivement les deux cellules fusionnent en une seule avec le nom de l'agent.Et ce dans tout le tableau quelque soit l'horaire et je jour de la semaine.
Merci a ceux qui prendront le temps de ce pencher sur une éventuelle solution.

5 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
19 nov. 2014 à 17:24
Bonjour,

Il est assez facile de réaliser ce code...
As tu essayé de passer par l'enregistreur de macro, de fusionner deux cellules dans ton tableau, puis de regarder le code que ça te génère ?
A partir de là ... une boucle pour parcourir ton tableau, quelques IF pour vérifier si la cellule d'à côté ( ou d'en dessous) contient la même donnée que ta cellule actuelle... et si oui.. zouuu.. on fusionne.


0
Kelhistoire Messages postés 2 Date d'inscription mercredi 19 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014
19 nov. 2014 à 19:14
Merci jordane45 pour ta réponse. La première ligne est très encourageante par contre le reste me laisse un peu perplexe. Si j'avais eu quelques notion de VBA j'aurais certainement fais ce que tu proposes si justement. Malheureusement je suis au VBA ce que l'honnêteté est à nos hommes politiques. souhaitant faire cette "manipulation" je me suis tourné vers internet où j'ai découvert que l'on pouvait le faire avec du VBA alors j'ose la question espérant trouver un bon Saint-Bernard avec dans son tonneau une solution toute trouvée. Je n'aurais sans doute jamais le temps d'approcher de près le VBA donc je recherche une solution (ou une formule) clé en main. C'est peut-être trop demandé ou pas dans l'esprit de ce forum mais je n'ai rien d'autre à répondre.
Encore merci à toi et bonne continuation sur la toile.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
19 nov. 2014 à 19:57
espérant trouver un bon Saint-Bernard avec dans son tonneau

Moi à la place du Saint Bernard.. le tonneau.. je l'aurai déjà vidé.... ^^


Je n'aurais sans doute jamais le temps d'approcher de près le VBA donc je recherche une solution (ou une formule) clé en main. C'est peut-être trop demandé ou pas dans l'esprit de ce forum mais je n'ai rien d'autre à répondre.


C'est clair.. que c'est totalement hors charte du site.....

Mais bon.. tu as l'honnêteté de le dire... tu exprimes clairement ton souci et tu es totalement courtois... c'est donc pour ces raisons que voilouuu.... :

Sub Fusion()
'--------------------------------------------------------------
Application.DisplayAlerts = False
Debug.Print " -------------- DEBUT DU PROGRAMME --------------"
Dim celVal As String
Dim celValNext As String
Dim l As Integer
Dim c As Integer
Dim col As Integer

'On boucle sur la plage
' Boucle sur chaque ligne dans laquelle
'  on boucle sur chaque colonne
For l = 2 To 8
 For c = 2 To 5
  col = c
  celValNext = Cells(l, c + 1).Value
  'On regarde si la cellule n'est pas déjà fusionnée:
   If Cells(l, col).MergeCells Then
    Debug.Print "** Cellule fusionnée :"; Cells(l, col).MergeArea.Address
    'Si oui.. on prend le Numéro de colonne correspondant
    'a la cellule fusionnée
     col = Cells(l, col).MergeArea.Column
   End If
   celVal = Cells(l, col).Value
    
   Debug.Print "L= " & l & "  C=" & c & " >> celVal = " & celVal & " celValNext = " & celValNext
   'on test si identique:
   If celVal = celValNext Then
      Debug.Print " Valeurs identiques... on fusionne !"
      Range(Cells(l, col), Cells(l, c + 1)).Select
      Selection.Merge
    End If
 Next c
Next l
Application.DisplayAlerts = True
End Sub



PS: Si, par hasard, la macro ne donne pas exactement ce que tu souhaites, revient expliquer ce qui ne marche pas... on verra si un autre saint Bernard ou l'ivrogne que je suis pourra compléter... ;-)


PS2: Si la question est résolue.. merci de cliquer sur le lien "Marquer comme résolu" sous le titre de la question.

0
Un grand merci à toi d'avoir pris le temps de te poser sur mon problème. Je ne vais pas avoir le temps dans l'immédiat de tester ta solution, mais dès que je peux je m'y colle.
Je reviendrais vers toi pour te tenir au courant.
Encore désolé si ma demande ne correspondait pas directement à la charte du site, je vais essayer de me souvenir de cette aventure pour ne pas la réitérer..

Bien à toi (et à tous les autres qui ont ou qui vont lire ces quelques lignes)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mepheistos Messages postés 1 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 20 novembre 2014
Modifié par Mepheistos le 20/11/2014 à 13:47
Trop curieux de voir si ta formule magique fonctionnait j'ai testé ! Ca marche nickel, exactement ce que je souhaitais comme résultat. Un grand merci. Ce qui est d'autant mieux c'est que ton programme fusionne aussi les cellules vides et ça je n'y avais pas pensé (pourquoi s'occuper de ce qui n'est pas ?) et du coup le résultat est au poil.

Encore un grand merci à toi !

PS : Je ne trouve pas le bouton pour "Marquer comme résolu"...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
20 nov. 2014 à 20:06
Encore un grand merci à toi !

Avec plaisir.^^


PS : Je ne trouve pas le bouton pour "Marquer comme résolu"...

Ce bouton se trouve sous le titre de ta question... à condition de te connecter avec le même nom de user que celui que tu as utilisé pour poser ta question ...(Kelhistoire).
Je m'en occupe pour cette fois.
0
Rejoignez-nous