BANZAI64, j'ai besoin de ton aide STP Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
a
amorapa
Membre habitué
Membre habitué
Messages : 105
Inscrit le : 11 décembre 2015
Version d'Excel : 2010

Message par amorapa » 24 janvier 2016, 17:31

Bonjour Banzai64,

J'ai repris la macro que tu avais fait ou il fallait cliquer sur les formes qui représentées des régions.

Selon la région , la macro renvoyer les données.

Si tu vois le fichier, cela te parleras.

Mon souci :

Les données sont sur la feuille données. J'ai supprimé les données pour que la base de données soit vierge.

mais dès que je supprime la ligne 6, cela fait planter la macro.
Je n'arrive pas à voir dans la macro, ce qu'il faut changer.

Car il faudrait que je puisse faire en sorte de pouvoir avoir la base de données vide sans que cela bloque la macro.

si tu as un moment, je te remercie,

j'ai passé du temps pour tenter de résoudre le problème, mais le code est trop compliqué pour moi pour résoudre le problème.
MACRO SECTEUR ET DONNEES.xlsm
(71.7 Kio) Téléchargé 9 fois
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 2
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 24 janvier 2016, 18:33

Bonjour

Cela serait bien(obligatoire) que tu modifies le titre

Sinon j'ai effacé les données de la page "Données"
Pas de plantage sauf le message (voulue) "Aucune donnée dans la page "Données""

Alors je fait quelque chose de mal/bien mais je n'ai aucun plantage

J'ai vu qu'il fallait supprimer ligne du tableau et la effectivement plantage

A vérifier si la "réparation" est valable
amorapa Barre défilement V005.xlsm
(73.46 Kio) Téléchargé 9 fois
Image
a
amorapa
Membre habitué
Membre habitué
Messages : 105
Inscrit le : 11 décembre 2015
Version d'Excel : 2010

Message par amorapa » 24 janvier 2016, 18:52

Bonsoir Banzai64,

La suppression de la ligne 6 et 5 est maintenant possible sans que cela perturbe la macro.

C'est vrai que le message est bien lorsqu'il n'y a pas de données, mais le problème, c'est que lorsque l'on veut rentrer la première ligne de la source de donnée, il n'arrête pas de mettre le message à chaque cellule.

L'important est que cela ne fasse pas planté la macro, si on clique sur une forme, et qu'il n'y a pas de données.

C'est pour cela que je pense que je vais le mettre de côté.

Par contre, j'aimerai bien savoir ce qu'il a fallu modifier, car j'ai cherché un moment dans le code. Il faut que je comprenne ou cela coincé au niveau du code.

Après, je ne voulais pas trop chercher à modifier des choses, dont je ne comprenais pas, car c'est claire qu'ensuite plus rien n'aurait fonctionné.

Désolé pour le titre du forum,

Mais encore, une fois merci beaucoup, et il faut me copier les lignes ou le code à changé

Merci à toi Banzai64
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 2
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 24 janvier 2016, 19:01

Bonjour

Tu vas vite le voir dans le code
J'ai laissé les anciennes lignes
Je reprends ici les lignes modifiées
        If IsArray(T1) Then
          NombreLigne = UBound(T1)
        Else
          NombreLigne = 1
        End If
        
        F1.Cells(2, Col(I)).Resize(NombreLigne) = T1              ' Recopie ces données dans la page "TAB"
        F1.Cells(2, Col(I) + 2).Resize(NombreLigne, 3) = T2       ' Idem
        F1.Cells(2, Col(I) + 1).Resize(NombreLigne) = NomCadre    ' Note le secteur
        F1.Cells(2, Col(I) + 3).Resize(NombreLigne).NumberFormat = "0%"
        F1.Cells(2, Col(I) + 4).Resize(NombreLigne).HorizontalAlignment = xlCenter
        F1.Cells(2, Col(I) + 3).Resize(NombreLigne).HorizontalAlignment = xlCenter
        ' Tri des données
        F1.Cells(2, Col(I)).Resize(NombreLigne, 5).Sort key1:=F1.Cells(2, Col(I) + 4), order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
        ' Recherche de la dernière ligne valide (colonne des montants)
        NbLg = F1.Cells(Rows.Count, Col(I) + 2).End(xlUp).Row
        ' On efface après cette ligne jusqu'à .....
        F1.Cells(NbLg + 1, Col(I)).Resize(NombreLigne, 5).ClearContents
Ne pas oublier la déclaration de la variable NombreLigne

Ce que j'ai compris de cette erreur
Pour récupérer des données pour les placer dans un tableau on utilise Tableau = Range("A1:A10")
Mais si il n'y a qu'une donnée ce n'est plus un tableau que l'on obtient mais juste une variable contenant la donnée (logique mais emmerdant embêtant)
Car dans le code je me sers de Ubound(Tableau) qui provoque une erreur si Tableau n'est pas un tableau

Pour ça le test If IsArray(T1) Then
Image
a
amorapa
Membre habitué
Membre habitué
Messages : 105
Inscrit le : 11 décembre 2015
Version d'Excel : 2010

Message par amorapa » 24 janvier 2016, 19:07

Merci Banzai64,

J'ai compris ton explication et le principe avec le tableau.

au niveau du code, je n'aurai jamais trouvé, c'est clair.

Je dirai que ce n'était pas évident à déterminer le problème et la solution.

Vraiment très fort, félicitation, et surtout un Grand Merci à Toi
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 2
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 24 janvier 2016, 19:15

Bonjour

Il faut que tu édites le titre et que tu le modifies
Image
a
amorapa
Membre habitué
Membre habitué
Messages : 105
Inscrit le : 11 décembre 2015
Version d'Excel : 2010

Message par amorapa » 24 janvier 2016, 19:18

ok, je ne savais pas si on pouvait modifier le titre,

je vais le faire maintenant

Bonne soirée et merci pour ton aide précieuse.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message