Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 23h23   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 46
Points : 12
Points : 12
Par défaut Copy Sheets qui plante

Bonjour

Une macro développée aujourd'hui ne fonctionne bizarrement plus. Elle s'arrête ici :

Code :
1
2
3
With Sheets(N)
        .Range(.Cells(L + 1, Cs), .Cells(L + 90, Cs)).Copy Sheets(A).Cells(L + 1, Ca)
End With
Avec le message d'erreur suivant :

Citation:
Erreur d'exécution'9'
L'indice n'appartient pas à la sélection.
Que se passe t-il exactement ?

Pour info, voici le code complet (qui marche normalement)...

Je vous remercie par avance pour votre aide. Ce forum est bien utile pour des débutants comme moi ! En espérant pouvoir rendre la pareille un de ces quatres...


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Sub Update_Sector_Data()
 
'Cette macro consolide les données des sociétés. Elle colle les données de chaque année dans l'onglet correspondant.
 
Dim i As Integer 'Année en chiffre (onglet de consolidation)
Dim A As String 'Année en lettre (onglet de consolidation)
Dim L As Integer 'Ligne
Dim S As String 'Société
Dim Cs As Integer 'Colonne société (origine du copier coller)
Dim Ca As Integer 'Colonne année (destination du copier coller)
 
'Initialisation des variables
 
L = 10 'Numéro de la ligne où se trouve la liste des sociétés
 
Cs = 1 'Numéro des colonnes
 
'Boucle des onglets de consolidation
 
For i = 2003 To 2020
 
A = i 'Transformation de la variable chiffrée en variable lettre pour faire un renvoi aux onglets
 
Cs = Cs + 1 'Changer de colonne quand on change d'année
 
'Boucle de la colonne année (destination du copier coller)
 
For Ca = 2 To 82
 
'Supprimer le contenu des cellules de l'onglet de consolidation si le champ société n'est pas renseigné
 
If Worksheets(A).Cells(L, Ca).Value = 0 Then
 
With Sheets(A)
    .Range(.Cells(L + 1, Ca), .Cells(L + 90, Ca)).ClearContents
End With
 
Else
 
 'Copier coller
 
N = Worksheets(A).Cells(L, Ca).Value
 
With Sheets(N)
        .Range(.Cells(L + 1, Cs), .Cells(L + 90, Cs)).Copy Sheets(A).Cells(L + 1, Ca)
End With
 
'Fin de la boucle de la colonne année (destination du copier coller)
 
End If
 
Next Ca
 
'Fin de la boucle des onglets de consolidation
 
Next i
 
End Sub
shimuno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 23h33   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
bonsoir,

lorsque la macro "s'arrête" , passe le curseur sur tes variables ( N, A ...) pour contrôler leur valeur ...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/09/2011, 09h43   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 46
Points : 12
Points : 12
Problème résolu : "" n'est pas la même chose que 0. Je me coucherai moins bête ce soir.
shimuno est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h52.


 
 
 
 
Partenaires

Hébergement Web