IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec la fonction Range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut Problème avec la fonction Range
    Bonjour,
    J'ai besoin de sélectionnée une plage de donnée. Pour se faire j'utilise la fontion Range comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set Plage = Worksheets(2).Range("A1:A10")
    Plus loin dans la même macro, j'ai ce code la qui me permet de récupérer le numéro de la dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DerniereLigne As Integer
        DerniereLigne = Sheets(2).UsedRange.Rows.Count
    J'aimerai pouvoir utiliser cette valeur dans ma fonction préalable dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = Worksheets("Par album").Range("A1:DerniereLigne")
    Mais j' obtient une erreur! 'erreur d'exécution 1004

    Comment puis-je faire?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    DerniereLigne est une variable, il faut donc la sortir.

    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = Worksheets("Par album").Range("A1:A" & DerniereLigne)
    Starec

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Mon pb c'est que ma variable est définie dans une autre fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Recup_Nb_Lignes()
    Et que j'ai besoin d'en faire appel dans ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Suppression()
    Lorsque je lance l'appli il me dit que ma variable n'est pas définie
    Comment je peut faire pour la récupérer?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Par défaut
    bonjour,
    au moment ou tu appelles ta fonction, tu fais un call avec les données que tu veux envoyer,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Recup_Nb_Lignes()
     
    call Suppression (DerniereLigne)
    et dans ton autre fonction tu met en paramètres les données voulues

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Suppression(DerniereLigne as integer)
    Je pense que sa devrait marcher.
    Vérifie.
    A+

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    J'ai toujours un problème je vais mettre l'intégralité de mes fonctions intéressées pour plus de clarté...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Button_Netoyage_fichier_Click()
        SupprimeDoublons (DerniereLigne2)
    End Sub
     
    Sub SupprimeDoublons(DerniereLigne As Integer)
        Dim Plage As Range, Cell As Range
        Dim Un As New Collection
        Dim Tableau() As Integer
        Dim x As Integer
     
        'Définit la plage de cellules pour la recherche de doublons
        Set Plage = Worksheets("Par album").Range("A1:A" & DerniereLigne)
     
        On Error Resume Next
        'Boucle sur les cellules de la plage cible
        For Each Cell In Plage
            'Création d'une collection de données uniques (sans doublons)
            Un.Add Cell, CStr(Cell)
     
            'Une erreur survient si l'élément existe dans la collection.
            'La procédure enregistre le numéro de ligne correspondant dans un tableau.
            If Err.Number <> 0 Then
                x = x + 1
                ReDim Preserve Tableau(1 To x)
                Tableau(x) = Cell.Row
                Err.Clear
            End If
        Next Cell
        On Error GoTo 0
     
        'On sort si aucun doublon n'a été trouvé.
        If x = 0 Then Exit Sub
     
        'Fige l'écran pendant la suppression des lignes
        Application.ScreenUpdating = False
     
        'Boucle sur le tableau pour supprimer les lignes contenant des doublons.
        For x = UBound(Tableau) To LBound(Tableau) Step -1
            Worksheets("Par album").Rows(Tableau(x)).EntireRow.Delete
        Next x
     
        Application.ScreenUpdating = True
    End Sub
     
    Private Sub Recup_Nb_Lignes()
     
        Dim DerniereLigne As Integer
        Dim DerniereLigne2 As Integer
     
        DerniereLigne = Sheets("Par chanson").UsedRange.Rows.Count - 1
        DerniereLigne2 = Sheets("Par album").UsedRange.Rows.Count - 1
     
        Label_Nb_Lignes1.Caption = "Nombre total de chansons :" & DerniereLigne
        Label_Nb_Lignes2.Caption = "Nombre total d'albums :" & DerniereLigne2
     
        Call SupprimeDoublon(DerniereLigne2)
    End Sub
    J'ai besoin de la variable DerniereLigne2 pour la fonction SupprimeDoublons
    Je ne suis pas sur du tout de les avoir placés au bon endroit...
    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Par défaut
    Où ton problème est situé?

    Tu fais appel deux fois à la fonction supprimeDoublon mais comment vas-tu sur la fonction Recup_Nb_Lignes ?

    Essaies sa et dis si c'est ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Button_Netoyage_fichier_Click()
        Recup_Nb_Lignes ()
    End Sub
    tu cliques sur ton bouton nettoyage qui va sur la fonction recup_nb_ligne qui fait appel à ta fonction suppression doublon.

    cordialement.

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,

    lances tu ta procédure avec un bouton ?

    Si c'est le cas (comme ton début de code l'indique) il est bien possible que ta variable dernièreLigne2 ne soit pas remplie car elle est définie dans la procédure Private Sub Recup_Nb_Lignes().

    2 solutions :
    1) Tu sauves dernière lignes 2 dans une cellule Xn et tu changes ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Button_Netoyage_fichier_Click()
        SupprimeDoublons (DerniereLigne2)
    End Sub
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Button_Netoyage_fichier_Click()
        Dim DerniereLigne2 as integer
        DerniereLigne2 = Range("Xn").value
        SupprimeDoublons (DerniereLigne2)
    End Sub
    2) Tu déclares DerniereLigne2 en Global (avant) toutes tes procédures, mais ce n'est pas recommandé (si tu fais cela, choisit un nom qui sera unique, du genre cetteApplicationDerniereLigne2)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo