Remplir les blancs d'un tableau croisé dynamique

jdelater

XLDnaute Nouveau
Bonjour, a partir d'un fichier excel je créé un tableau croisé dynamique.

Ce tableau est copié dans un nouvel onglet, et je souhaite remplir tous les blancs de ce tableau grâce a une macro (pour l'intégrer a une base de donnée access).

Donc pour mon code j'ai résonné comme suit: Test de chaque case du tableau du haut vers le bas, colonne par colonne (7 colonnes pour 3306 lignes)
Si la case testée est vide, il copie celle du dessus. Malheureusement cela ne fonctionne pas du tout (erreurs diverses et variées selon le code testé)
Code:
Sub Bouton1_QuandClic()
 
Worksheets("Final").Activate
ActiveSheet.UsedRange.Select
 
Dim i, j, n, m As Integer
    n = 3306
    m = 7
        
    For j = 1 To m
        For i = 2 To n + 1
            
            Range("A1").Offset(i, j).Select
            
            If IsEmpty(Selection) Then
            Range("A1").Offset(i - 1, j).Select
            Selection.Copy
            Range("A1").Offset(i, j).Select
            ActiveSheet.Paste
        Next i
    Next j
 
End Sub

Veuillez trouver ci-joint un morceau choisi du fichier: le tableau tel qu'il est en onglet 1, et tel que je le souhaites en onglet2.

Avez-vous une idée? Merci d'avance
 

Pièces jointes

  • ex fichier.xls
    14.5 KB · Affichages: 208
  • ex fichier.xls
    14.5 KB · Affichages: 216
  • ex fichier.xls
    14.5 KB · Affichages: 213

Kiseki

XLDnaute Occasionnel
Re : Remplir les blancs d'un tableau croisé dynamique

Bonjour,

Il me semble bien qu'il est impossible de changer une donnée résultante du TDC.

Tu à essayé de commencer par copier le TDC et ensuite tu aura tout les droits.
 

Kiseki

XLDnaute Occasionnel
Re : Remplir les blancs d'un tableau croisé dynamique

En effet, désolé.

Donc tu à une erreur de next sans for, vu l'aide :

Il te suffit de mettre End If :


Code:
Sub test()
Dim i, j, n, m As Integer
    n = 10
    m = 7
        
    For j = 1 To m
        For i = 2 To n + 1
            
            Range("A1").Offset(i, j).Select
            
            If IsEmpty(Selection) Then
            Range("A1").Offset(i - 1, j).Select
            Selection.Copy
            Range("A1").Offset(i, j).Select
            ActiveSheet.Paste
            End If
        Next i
    Next j
 
End Sub
 

jdelater

XLDnaute Nouveau
Re : Remplir les blancs d'un tableau croisé dynamique

incroyable!!! j'avais fait des tas d'essais, en mettant le End If également mais surement pour d'autres codes... en tout cas, ça fonctionne très bien!

Reste quelques petits soucis a régler mais merci beaucoup Kiseki!
 

Discussions similaires

Statistiques des forums

Discussions
312 482
Messages
2 088 766
Membres
103 955
dernier inscrit
mikaveli