Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème de code/macro

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 !

luke3300

XLDnaute Impliqué
Bonjour à tout le forum,

voilà, il y a quelques temps, vous m'avez aidé pour créer un fichier et dans celui-ci, il y a un code que voici:

Sub totaux()
Dim tablo As Variant
Dim i As Long, j As Byte, k As Long, s As Byte
Dim PremLig As Long, DerLig As Long, DerLig2 As Long

For s = 1 To 4
With Sheets(s)
PremLig = .Columns("A:A").Find(What:="Sce", LookAt:=xlWhole).Row + 1
DerLig = .Columns("A:F").Find(What:="Remplaçants", LookAt:=xlWhole).Row - 1
DerLig2 = .Columns("A:A").Find(What:="Total", LookAt:=xlWhole).Row - 2

tablo = .Range(.Cells(PremLig, 1), .Cells(DerLig, 32))

For i = DerLig + 2 To DerLig2 Step 2
For j = 5 To 31
If .Cells(i, j) <> "" Then
For k = 1 To UBound(tablo)
If tablo(k, 1) = .Cells(i, j) Then
tablo(k, UBound(tablo, 2)) = tablo(k, UBound(tablo, 2)) + .Cells(i + 1, j)
End If
Next k
End If
Next j
Next i

For i = 1 To UBound(tablo)
Sheets("Totaux").Cells(i + 2, s + 10) = tablo(i, UBound(tablo, 2))
Next i

Erase tablo
End With
Next s

Ce code fonctionne parfaitement sous excel 2003 mais quand je l'utilise sur excel 2007, il m'affiche un déboggage pour cette ligne:

PremLig = .Columns("A:A").Find(What:="Sce", LookAt:=xlWhole).Row + 1

Evidement ça bloque le bon déroulement du code.
Quelqu'un pourrait-il éclairer ma lanterne à ce sujet? Je précise que rien n'a été changé dans ce fichier qui je rappelle fonctionne à merveille sous excel 2003.

Un grand merci d'avance pour votre aide précieuse et surtout bonne journée à tous.
 
Re : Problème de code/macro

Bonjour soenda, le forum,

à mon avis, je dois me planter quelque part parce que ça ne donne rien chez moi :-(

Le débogueur se déclenche ...

Voici le code que j'obtiens:

**********
Sub totaux()
Dim V As Variant

For Each V In Array("Décès", "Standard", "Non-Standard", "Totaux")
With Sheets(V)
PremLig = .Columns("A:A").Find(What:="Sce", LookAt:=xlWhole).Row + 1
DerLig = .Columns("A:F").Find(What:="Remplaçants", LookAt:=xlWhole).Row - 1
DerLig2 = .Columns("A:A").Find(What:="Total", LookAt:=xlWhole).Row - 2

tablo = .Range(.Cells(PremLig, 1), .Cells(DerLig, 32))

For i = DerLig + 2 To DerLig2 Step 2
For j = 5 To 31
If .Cells(i, j) <> "" Then
For k = 1 To UBound(tablo)
If tablo(k, 1) = .Cells(i, j) Then
tablo(k, UBound(tablo, 2)) = tablo(k, UBound(tablo, 2)) + .Cells(i + 1, j)
End If
Next k
End If
Next j
Next i

For i = 1 To UBound(tablo)
Sheets("Totaux").Cells(i + 2, s + 10) = tablo(i, UBound(tablo, 2))
Next i

Erase tablo
End With
Next
End Sub

**********

Visiblement j'ai du faire une bêtise mais laquelle??? Il faut dire que j'y connais rien en code ...

Merci d'avance pour votre aide et bonne journée.
 
Re : Problème de code/macro

Bonjour le fil, Luke3300

1) Garde tes déclarations de variables
Code:
Sub totaux()
[COLOR="Blue"][B]Dim tablo As Variant
Dim i As Long, j As Byte, k As Long
Dim PremLig As Long, DerLig As Long, DerLig2 As Long[/B][/COLOR]
Dim V As Variant
 . . .
2) Quel message d'erreur renvoie le débugueur ET quelle ligne de code est surlignée ?

A plus
 
Re : Problème de code/macro

Bonjour soenda, le forum,

désolé pour ma réponse tardive, j'ai eu quelques soucis de santé et je me suis un peu éloigné de mon ordi et de ce casse-tête.
Alors voici ce que j'obtiens du débogueur:

"Erreur d'exécution 91 - variable d'objet ou variable de blocs non définie"

Et c'est cette ligne qui est en jaune: "PremLig = .Columns("A:A").Find(What:="Sce", LookAt:=xlWhole).Row + 1"

Et dans mon tableau de synthèse, tout est encore une fois décalé ...
Quelqu'un a une idée?

Merci d'avance à tous et bon dimanche.

PS: voici mon code actuel:

Sub totaux()
Dim tablo As Variant
Dim i As Long, j As Byte, k As Long, s As Byte
Dim PremLig As Long, DerLig As Long, DerLig2 As Long

For Each V In Array("Décès", "Standard", "Non-Standard", "Totaux")
With Sheets(v)
PremLig = .Columns("A:A").Find(What:="Sce", LookAt:=xlWhole).Row + 1
DerLig = .Columns("A:F").Find(What:="Remplaçants", LookAt:=xlWhole).Row - 1
DerLig2 = .Columns("A:A").Find(What:="Total", LookAt:=xlWhole).Row - 2

tablo = .Range(.Cells(PremLig, 1), .Cells(DerLig, 32))

For i = DerLig + 2 To DerLig2 Step 2
For j = 5 To 31
If .Cells(i, j) <> "" Then
For k = 1 To UBound(tablo)
If tablo(k, 1) = .Cells(i, j) Then
tablo(k, UBound(tablo, 2)) = tablo(k, UBound(tablo, 2)) + .Cells(i + 1, j)
End If
Next k
End If
Next j
Next i

For i = 1 To UBound(tablo)
Sheets("Totaux").Cells(i + 2, s + 10) = tablo(i, UBound(tablo, 2))
Next i

Erase tablo
End With
Next v
End Sub
 
Re : Problème de code/macro

Bonsoir soenda, le fil,

exact mais j'y comprend plus rien ... déjà qu'avant c'était galère :-(

En fait, le code récupère la synthèse des données des 1ères feuilles pour la recopier dans le tableau de la feuille "Totaux" suivant chaque sce.

Perso je ne vois pas ce qu'il faut changer ...

Merci pour votre aide et votre patience et bonne soirée.
 
Re : Problème de code/macro

Bonjour le fil, soenda, Marcel,

alors là ... chapeau! Je viens d'essayer en modifiant juste ça et ça marche nickel! Merci Marcel. Il faut dire que je n'avais pas vu ton message dans la foulée ... :-(

Maintenant il me reste 2 questions:


Que pourrais-je y changer?
Bonne journée à tous et encore merci d'avance.
 
Re : Problème de code/macro

En plus de changer
For j = 5 To 31
en
For j = 5 To 51

as-tu essayé d'augmenter également la taille du tableau, en changeant
tablo = .Range(.Cells(PremLig, 1), .Cells(DerLig, 32))
par quelque chose comme
tablo = .Range(.Cells(PremLig, 1), .Cells(DerLig, 52))
 
Dernière édition:
Re : Problème de code/macro

Bonsoir Marcel, soenda et le fil,

ben voilà, ça marche nickel! 🙂

Je n'ai donc qu'une chose à dire ... c'est un énorme merci à vous 2 pour votre aide et votre patience et surtout ... merci au forum d'exister.

Bon dimanche soir à toutes et tous.
 
- 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
15
Affichages
662
Réponses
5
Affichages
847
Réponses
4
Affichages
692
Réponses
8
Affichages
357
Réponses
10
Affichages
634
Réponses
8
Affichages
753
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…