Erreur sur code VBA - Décalage non voulu

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

Antho35

XLDnaute Occasionnel
Bonjour,

J'ai un petit souccit avec mon code vba contenu dans "fiches secteur"

Il y a un décalage, théoriquement mon tableau données démographique doit venir juste aprés le tableau 'les communes du secteur" si je met le code indiqué ci-après çà décale de façon anormal.

Qui a un petit idée, je pense que je n'en suis pas loin.

Code:
Dim test As Boolean 'déclare la variable test

Private Sub Worksheet_Change(ByVal Target As Range)
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim nl As Integer 'décalre la variable nl

If test = True Then Exit Sub 'si test est "vrai", sort de la procédure
If Target.Address <> "$J$2" Then Exit Sub 'si le chamgement a lieu ailleurs qu'en J2, sort de la procédure
Application.ScreenUpdating = False 'masque les raffraîchissements d'écran
test = True 'définit la variable test
'efface les éventuelles anciennes données
If Range("C5") <> "DONNES DEMOGRAPHIQUE" Then Range("C5").CurrentRegion.Resize(Range("C5").CurrentRegion.Rows.Count + 1).EntireRow.Delete
Set o = Sheets("Bases Communes") 'définit l'onglet o
dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Rows 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = o.Range("A2:D" & dl) 'définit la plage pl
o.Range("A2").AutoFilter Field:=5, Criteria1:=Target.Value 'filte le tableau par rapport au secteur
pl.SpecialCells(xlCellTypeVisible).Copy Range("C8") 'copie le tableau filtrée
nl = Range("C8").CurrentRegion.Rows.Count
o.Range("A2").AutoFilter 'supprime le filtre
Range("C5:G7").Cut
Range("C5:G7").Offset(nl + 4, 0).Insert Shift:=xlDown
test = False 'redéfinit la variable test
Application.ScreenUpdating = True 'affiche les raffraîchissements d'écran
End Sub

Et voici le fichier.

Merci
 

Pièces jointes

Dernière édition:
Re : Erreur sur code VBA - Décalage non voulu

Re

Dernier acte: la recopie
(Pour infos: toutes les infos étaient déjà là dans le fil ...)
Test OK chez moi la copie se fait.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Déclarations des variables
Dim  pl As Range, derl&, nl&, dl&

If test = True Then Exit Sub
If Target.Address <> "$K$2" Then Exit Sub
Application.ScreenUpdating = False
    test = True
    Rows(3).Resize(1000).Clear
    With Sheets("Bases Communes")
        dl = .Range("A" & .Rows.Count).End(xlUp).Row
        Set pl = .Range("A4:H" & dl)
        .Range("A4").AutoFilter Field:=9, Criteria1:=Sheets("Fiche Secteur").[K2] 'filte le tableau par rapport au secteur
        nl = .Range("A4:A" & .Range("A65536").End(xlUp).Row).SpecialCells(12).Count
        pl.SpecialCells(12).Copy Range("A2") 'copie le tableau filtrée
        .Range("A4").AutoFilter
    End With
    test = False
Application.ScreenUpdating = True
End Sub
 
Re : Erreur sur code VBA - Décalage non voulu

Ok la çà fonctionne, juste un petit bémole si je met 8 (qui n'a pas contenu dans le tableau) j'obtient, une erreur de dépassement.

Maintenant que cela fonctionne, comment dois je faire pour faire la même choses avec mes autres tableaux ?
 
Re : Erreur sur code VBA - Décalage non voulu

Re

Maintenant que cela fonctionne, comment dois je faire pour faire la même choses avec mes autres tableaux ?
Alors si j'étais toi, c'est à dire si j'y allais à tâtons avec VBA parce que étant au début de l'apprentissage de la chose
1) je lirai chaque ligne de code pour bien comprendre ce que chaque ligne fait
2) en cas de doute, j'ajouterai des MsgBox pour tester mes variables (comme je l'ai fait précédemment dans le fil)
3) je modifierai le noms des feuilles, les adresses des cellules selon les besoins.
4) et surtout j'essaierai d'être attentif à ma syntaxe.

Tu as toutes les infos et plus dans le fil pour faire ce qu'il y a faire.
YAPLUKA 😉
 
Re : Erreur sur code VBA - Décalage non voulu

Re


Pour ce qui concerne les variables
(en premier lieu, dans Excel: faire ALT+F11 puis F1)
ou lire ceci

Pour le reste, faire des suppositions c'est bien.
La prochaine étape c'est tester ces suppositions pour les infirmer ou les confirmer.

Bons tests

M'en vais voir le match.
A+ tard.
 
- 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
599
Réponses
11
Affichages
146
Réponses
2
Affichages
406
Réponses
7
Affichages
722
Réponses
3
Affichages
789
Retour