Pb macro excel 2007 / 2010

  • Initiateur de la discussion Initiateur de la discussion eiphos1212
  • 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 !

E

eiphos1212

Guest
Bonjour
J'ai un souci avec une macro qui fonctionnait (laborieusement il est vrai) sur 2007 et qui ne fonctionne plus correctement sur 2010
Cette macro insère une ligne à chaque fois qu'elle rencontre un sous total (sst)
Avec 2010, ça fonctionne sur quelque ligne puis plus rien !
Pourriez vous m'aider ?
D'avance merci beaucoup
 

Pièces jointes

Re : Pb macro excel 2007 / 2010

Bonjour Pierrejean je viens de voir ton message, merci beaucoup je vais m'empresser de l'essayer et te donne des nouvelles
Par contre j'ai a nouveau un fichier du même genre (voir fichier joint) mais là il faut que ma ligne s'insère avant le sst.
J'ai cherché avec ta macro mais je suis décidement pas faite pour ça !!... 🙁
Pourrais tu m'aider à nouveau ? d'avance merci beaucoup
 

Pièces jointes

Re : Pb macro excel 2007 / 2010

bonjour
Ca ne fonctionne pas... en fait après la macro la colonne A avec les croix disparait et tout est décalé.
Et si mon tableau avait 41 colonne (jusqu'à AP) quel serait les paramètres à changer ?
Merci beaucoup de votre retour
 
Re : Pb macro excel 2007 / 2010

Super Mais je crois qu'à demander plusieurs choses en même temps ça embrouille
Je te joins à nouveau mes fichiers tels qu'ils sont vraiment avec les macros que tu as faites et que je n'arrive pas à adapter puisque mes colonnes vont au delà de ce qu'il y a dans les macros
J'espère avoir été claire... désolée pour le dérangement
Merci beaucoup de ton aide
 

Pièces jointes

Re : Pb macro excel 2007 / 2010

Re

Tes macros apres adaptation
Attention !! tres gros fichiers: un peu de patience sera utile (chez moi 40 sec et 400 secondes)
Code:
Option Base 1
Sub insere()
Application.ScreenUpdating = False
With Sheets("CS")
derlin = .Range("B" & .Rows.Count).End(xlUp).Row
tablo = .Range("A8:AN" & derlin)
Dim tablo1()
ReDim tablo1(40, 1)
ligne = 1
For n = LBound(tablo, 1) To UBound(tablo, 1)
  If tablo(n, 3) = "ssT" Then
    tablo1(1, ligne) = ""
    ligne = ligne + 1
    ReDim Preserve tablo1(40, ligne)
  End If
  For m = 1 To 40
    tablo1(m, ligne) = tablo(n, m)
    Next m
    ligne = ligne + 1
    ReDim Preserve tablo1(40, ligne)
Next n
.Range("A8").Resize(UBound(tablo1, 2), UBound(tablo1, 1)) = Application.Transpose(tablo1)
For n = 8 To .Range("B65536").End(xlUp).Row
  If .Range("B" & n) = "" Then .Range("D3:AN3").Copy Destination:=.Range("D" & n)
Next n
End With
Application.ScreenUpdating = True
End Sub
 
Sub insertion()
'debut = Timer
Application.ScreenUpdating = False
derlin = Range("B" & Sheets("CEGID").Rows.Count).End(xlUp).Row
Dim t2()
ReDim t2(1 To 1)
tablo = Range("A5:AP" & derlin)
For n = LBound(tablo, 1) To UBound(tablo, 1)
 For m = LBound(tablo, 2) To UBound(tablo, 2)
  x = x & tablo(n, m) & ";"
Next m
t2(UBound(t2)) = x
ReDim Preserve t2(1 To UBound(t2) + 1)
If InStr(x, "ssT") <> 0 Then
t2(UBound(t2)) = ";;;" & Split(t2(UBound(t2) - 1), ";")(1) & ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
ReDim Preserve t2(1 To UBound(t2) + 1)
End If
x = ""
Next n
Dim t3()
ReDim t3(1 To UBound(t2), 1 To 41)
For n = LBound(t2) To UBound(t2)
 For m = 1 To 41
   If t2(n) <> "" Then t3(n, m) = Split(t2(n), ";")(m)
 Next m
Next n
Range("A5").Resize(UBound(t3), 7) = t3
For n = 5 To Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row
  If Range("C" & n) <> "" Then Range("D3:AP3").Copy Destination:=Range("C" & n)
Next
'MsgBox (Timer - debut)
Application.ScreenUpdating = True
End Sub
 
Re : Pb macro excel 2007 / 2010

Bonjur Pierrejean

Merci beaucoup !
Ca fonctionne pour la première et c'est très rapide !
Par contre ça bloque pour la seconde à ce niveau x = x & tablo(n, m) & ";"
Merci à nouveau pour ton aide précieuse
Sophie
 
Re : Pb macro excel 2007 / 2010

Re

Probablement du a l'abondance d'info dans les lignes qui ne permet pas d'alimenter le tableau

Teste cette version

Code:
Sub insertion_b()
Application.ScreenUpdating = False
Dim Largecol(1 To 42)
Dim hligne(1 To 4)
For n = 1 To 42
  Largecol(n) = Sheets("CEGID").Columns(n).ColumnWidth
Next n
For n = 1 To 4
  hligne(n) = Sheets("CEGID").Rows(n).RowHeight
Next n
 derlin = Sheets("CEGID").Range("A" & Sheets("CEGID").Rows.Count).End(xlUp).Row
 Sheets.Add.Name = "temp"
For n = 1 To derlin
  ligne = ligne + 1
  Sheets("CEGID").Range("A" & n & ":AD" & n).Copy Destination:=Sheets("temp").Cells(ligne, 1)
  If Sheets("CEGID").Range("C" & n) = "ssT" Then
  ligne = ligne + 1
  Sheets("CEGID").Range("D3:AD3").Copy Destination:=Sheets("temp").Cells(ligne, 4)
  End If
Next
Sheets("temp").Cells.Copy Destination:=Sheets("CEGID").Cells
For n = 1 To 42
  Sheets("CEGID").Columns(n).ColumnWidth = Largecol(n)
Next n
For n = 1 To 4
  Sheets("CEGID").Rows(n).RowHeight = hligne(n)
Next n
Application.DisplayAlerts = False
Sheets("temp").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 
Re : Pb macro excel 2007 / 2010

Bonjour
Désolée de cette réponse très tardive
Ca fonctionne mais (il y a a souvent un mais...) lorsque les lignes de sous totaux sont insérés les résultats des formules n'apparaissent pas. Les formules sont bien là mais impossible de faire apparaître le résultat, j'ai validé la cellule, changer la couleur mais rien n'y fait...
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
33
Affichages
2 K
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
797
Themax
T
Réponses
4
Affichages
586
Réponses
6
Affichages
662
Réponses
9
Affichages
749
Compte Supprimé 979
C
Retour