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 :

Adresse de cellule variable [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut Adresse de cellule variable
    Bonjour,

    J'essaye de faire une macro qui me fait une recherche dans un tableau, selon l'adresse trouvée, enregistré le contenu de la même ligne dans une autre feuille. J'aimerais utiliser ma variable "Lignes" dans la fonction : Range("Lignes").Offset(1).Value
    Dans mon programme, ça m'affiche une erreur.

    Merci de votre aide.

    Voici une partie de mon programme

    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
    Dim Plage As Range
    Dim Lignes(), i As Long
    Dim Texte As String
    Dim Texte1 As String
    Dim adresse As String
    Dim Flag As Boolean
    Dim semaine As String
     
    Set Plage = Sheets("BD").Columns(1) 
    Texte = "Portes"   
    Flag = Find_Next(Plage, Texte, Lignes()) 
    If Flag Then  
        For i = LBound(Lignes) To UBound(Lignes)  
            Debug.Print Lignes(i)
        Next i
    Else
        MsgBox "L'expression : " & Texte & " n'a pas été trouvée dans la plage : " & Plage.Address
    End If
     
       Worksheets("BD").Activate
       Texte1 = Range("Lignes").Offset(0, 2).Value
       Worksheets("Equipe").Activate
       Range("B9").Value = Texte
       Range("D9").Value = Texte1

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,

    il semblerait que Ligne() soit un tableau de longueur variable, mais qui n'a pas été initialisé.

    D'ou une erreur!

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut
    Je m'y connais pas trop en VB, auriez vous une suggestion de comment je peux initialiser "Lignes()" pour que ça marche?

    Merci d'avance

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    Bonjour,
    Citation Envoyé par bangibess Voir le message
    Range("Lignes").Offset(1).Value
    Ici tu fais référence à une plage nommée, pas à ta variable tableau.
    Pour faire référence à une adresse de cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Ligne = 3
    Debug.Print Range("A" & Ligne)

    Citation Envoyé par bangibess Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Lignes(), i As Long
     
    Flag = Find_Next(Plage, Texte, Lignes()) 
    If Flag Then  
        For i = LBound(Lignes) To UBound(Lignes)  
            Debug.Print Lignes(i)
        Next i
    End if
    Sans savoir ce que fait ta fonction Find_Next, ça va être dur. Cette fonction remplis le tableau Lignes ?

    letienne

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut
    Merci de votre réponse. Voici ma fonction Find_Next. Elle me permet de faire une recherche dans une colonne. Je vais essayer ta proposion pour voir si ça marche.

    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
    Function Find_Next(Rng As Range, Texte As String, Tbl()) As Boolean
    Dim Nbre As Integer, Lig As Long, Cptr As Long
     
        Nbre = Application.CountIf(Rng, Texte)
        If Nbre > 0 Then
            ReDim Tbl(Nbre - 1)
            Lig = 1
            For Cptr = 0 To Nbre - 1
                Lig = Rng.Find(Texte, Cells(Lig, Rng.Column), xlValues).Row
                Tbl(Cptr) = Cells(Lig, Rng.Column).Address
            Next
        Else
            GoTo Absent
        End If
        Find_Next = True
        Exit Function
    Absent:
        Find_Next = False
     
    End Function

  6. #6
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    ok dans ce cas Range(Lignes(i)) au lieu de Range("Lignes"), ça devrait marcher.

    EDIT :

    Par contre comme il y a plusieurs lignes possible il faut mettre ça dans une boucle.

    letienne

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut
    Du coup j'ai mis cette ligne : Texte1 = Range(Lignes(i)).Offset(0, 2).Value dans ma boucle et ça marche.
    Merci beaucoup

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

Discussions similaires

  1. Adresse de cellule en variable pour somme
    Par 2l_fr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/10/2013, 12h25
  2. Adresse cellule variable
    Par pierrotlx dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 09/07/2006, 18h19
  3. incrémenter une cellule jusqu'a une cellule variable
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 14h48
  4. [VBA-E]Selection plage de cellules variable
    Par julien5 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 14h51
  5. Couleur de cellule variable suivant une valeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/03/2006, 08h04

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