• Initiateur de la discussion Initiateur de la discussion excelo
  • Date de début Date de début

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 !

excelo

XLDnaute Occasionnel
Bonsoir à tous,
J'ai un p'tit souci que je n'arrive pas à résoudre, problème de code VBA pour éclatement de date à l'horizontale. je vous envoie mon fichier, si vous pouvez me dépanner, j'y arrive pas (je débute en VBA) je vous envoi mon fichier
Pour résumer,
"feuil1" code que j'essaie de faire marché et qui marche de travers
"résultat souhaité" résultat que j'aimerai avoir sur ma feuil1

Les adeptes du VBA vont me rire au nez.... (j'assume complètement!!!!! lol)
 

Pièces jointes

Re : problème macro

Bosoir Excelo, bonsoir le forum,

Pas si simple Excelo... Je te propose une macro un peu tirée par les cheveux car je ne savais pas si la position de a et b était variable. J'ai commencé par repérer ces deux données pour me servir de base pour définir les plages... Code commenté j'espère que ça te conviendra.

Moi je pense que ce sont les adeptes des formules qui vont nous rire au nez. Car il doit y avoir une formule pour ton cas mais malheureusement je suis nul en formule...
 

Pièces jointes

Re : problème macro

Bonsoir excelo
Code:
[COLOR="DarkSlateGray"]Private Sub CommandButton1_Click()
Dim n As Long, k As Long
Dim oTab As Range, oCel As Range
   For n = 2 To 6 Step 4 'traiter E2:F5, puis E6:F9
      k = 0
      Set oTab = Range(Cells(n, 5), Cells(n + 3, 6))
      For Each oCel In oTab.Cells
         Cells(n, 7).Offset(0, k) = oCel
         k = k + 1
      Next oCel
   Next n
End Sub[/COLOR]
peut-être ?​
Bonne nuit.
ROGER2327
 
Re : problème macro

Bonjour Robert,
Merci pour ta macro, elle marche à merveille et me convient trés bien. le code est totalement différent et c'est vrai que j'ai pas trop saisi comment tu as fait mais je vais me pencher dessus grâce à tes commentaires. Merci beaucoup.

Bonjour ROGER2327,
Merci pour ton code, je l'ai testé et elle marche trés bien aussi. simple et efficace. Merci beaucoup pour ton aide.

Bonne journée à tous ;-)
 
Re : problème macro

Bonjour Excelo, Roger, bonjour le forum,

Pour Excelo, si ton tableau est fixe je te conseille d'utiliser la macro de Roger beaucoup plus simple...

Pour Roger, si tu me vouvoies encore une fois je promets de ne plus te parler... Non mais !!!
 
Re : problème macro

Bonjour à tous,
j'ai eu le temps de bien analyser vos codes aprés un bon café ;-)
Le code de Roger2327 fonctionne par tranche de 4 lignes et ne tient pas compte des variables sur la colonne A, il ne marche que si j'ai toujours 4 lignes de dates, et c'est pas mon cas sur mon fichier d'origine (pour mon exemple présenté au début il convient trés bien). j'aurais du le préciser dès le début mais à 00h30 mon cerveau m'obigeait à aller me coucher!!!!!
Robert, je viens aux nouvelles concernant ta macro, effectivement les positions a et b sont variables. Mon exemple était pas bon, lorsqu'il y a "texte" sur la colonne A, il faudrait que l'éclatement des dates redémarre sur la même ligne à l'horizontale. je corrige mon exemple sur fichier joint.
Si vous connaissiez le code qui permettrait de redemarrer l'éclatement, je suis preneur!,
Merci à tous
 

Pièces jointes

Re : problème macro

Merci beaucoup Robert pour ton aide,
Je sens que je vais avoir du mal à comprendre vu la complexité du code mais grâce a tes commentaires et avec un peu d'acharnement j'ai peut être un espoir!!!!!,
Merci beaucoup Robert ;-)
bonne journée à tous
 
Re : problème macro

Bonjour à tous
Dommage qu'on ait pas eu dès le début la vraie règle du jeu...
Voici l'adaptation de mon code d'hier aux nouvelles conditions :
Code:
[COLOR="DarkSlateGray"]Private Sub CommandButton1_Click()
Dim n As Long, k As Long
Dim oDat As Range, oCel1 As Range, oIndex()
Dim oTab As Range, oCel As Range
   ReDim oIndex(0)
   With Cells(1, 1).CurrentRegion
      Set oDat = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
   End With
   For Each oCel1 In oDat.Columns(1).Cells
      If Not IsEmpty(oCel1) Then
         ReDim Preserve oIndex(0 To UBound(oIndex) + 1)
         oIndex(UBound(oIndex)) = oCel1.Row
      End If
   Next oCel1
   ReDim Preserve oIndex(0 To UBound(oIndex) + 1)
   oIndex(UBound(oIndex)) = oDat.Cells(oDat.Rows.Count, 1).Row + 1
   For n = 1 To UBound(oIndex) - 1
      k = 0
      Set oTab = Range(Cells(oIndex(n), 5), Cells(oIndex(n + 1) - 1, 6))
      For Each oCel In oTab.Cells
         Cells(oIndex(n), 7).Offset(0, k) = oCel
         k = k + 1
      Next oCel
   Next n
End Sub[/COLOR]
Bon courage !​
_
ROGER2327
 
Dernière édition:
Re : problème macro

Bonsoir Roger2327, le forum,
Merci pour ton code parfaitement adapté à mon cas, je suis désolé de ne pas avoir été assez explicite dès le départ, j'ai voulu faire le plus simple possible et j'ai homis de préciser le plus important.
J'ai une question à poser: ou est-ce que vous allez chercher tous ces codes?????
 
Re : problème macro

Bonsoir Excelo, Roger, bonsoir le forum,

Bien vu Roger pour l'astuce de rajouter un index au tableau. Finalement mes codes et les tiens sont très similaires sauf que je n'ai pas eu ta lumineuse idée et donc, pour éviter le bug du n+1 qui dépassait les limites tu tableau, j'ai traité la dernìere plage à part.

Excelo, je ne sais pas pour Roger, mais moi je dois tout ce que je sais à ce forum. J'ai eu des maîtres plus que remarquables par leurs compétences mais surtout par leur qualités humaines. C'est pour cela que j'adore ce forum...
 
- 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

Réponses
3
Affichages
656
K
Réponses
2
Affichages
982
k6s33
K
N
Réponses
6
Affichages
2 K
noway1789
N
C
Réponses
3
Affichages
1 K
P
Réponses
10
Affichages
3 K
Pepino
P
J
Réponses
1
Affichages
6 K
J
N
Réponses
2
Affichages
1 K
jerome.ba
J
S
Réponses
2
Affichages
1 K
Sabrina75017
S
L
Réponses
0
Affichages
3 K
LiuXing
L
J
Réponses
15
Affichages
19 K
J
Retour