Fusionner des cellules [Résolu]

Messages postés
2
Date d'inscription
mercredi 19 novembre 2014
Dernière intervention
19 novembre 2014
- - Dernière réponse : jordane45
Messages postés
23597
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
- 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.
Afficher la suite 

Votre réponse

5 réponses

Messages postés
23597
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
0
Merci
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.


Commenter la réponse de jordane45
Messages postés
2
Date d'inscription
mercredi 19 novembre 2014
Dernière intervention
19 novembre 2014
0
Merci
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.
Commenter la réponse de Kelhistoire
Messages postés
23597
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
0
Merci
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.

Commenter la réponse de jordane45
0
Merci
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)
Commenter la réponse de mepheistos
Messages postés
1
Date d'inscription
jeudi 30 avril 2009
Dernière intervention
20 novembre 2014
0
Merci
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"...
jordane45
Messages postés
23597
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
-
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.
Commenter la réponse de Mepheistos

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.