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 des Offset


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut Problème avec des Offset
    Bonjour

    Dans mon code je recherche une valeur (venant d'une textbox) dans une colonne puis des que la valeur est trouvée, elle renvoie grace aux offset d'autres valeurs dans des text box...le problème c'est que je n'arrive pas a renvoyer des données comme si le activecell.select ne servait à rien.
    Auriez vous une idée? Merci

    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
    Private Sub New_component_Change()
     
    Dim wb As Workbook
    Dim var As Variant
    var = New_component.Value 'textbox principale
     
    Workbooks("Editeur_ecn.xls").Worksheets("EENSART_REF").Activate
    For Each cell In Range("A1:A65536")
    If cell.Value = var Then 
    ActiveCell.Select
    With ActiveCell
    New_desfr = .Offset(0, 2) 'textbox de renvoie
    New_adddesfr = .Offset(0, 3) 'textbox de renvoie
    End With
     
    For Each wb In Workbooks
           If Left(wb.Name, 1) = "F" Then
               Workbooks(wb.Name).Worksheets("ECN Number").Activate
               Exit For
           End If
    Next
    End If
    Next cell
     
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    If cell.Value = var Then
    ActiveCell.Select

    traduire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    si la valeur de la cellule = var alors selectionner la cellule active

    oui mais voila, ce n'est pas parce qu'elle est égale a var qu'elle est devenu la celule active par enchantement. la cellule active est forcément déja selectionnée, donc activecell.select ne sert a rien. une cellule ne devient l'activecell qu'aprés avoir été selectionnée

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu irais plus vite en utilisant Find(Var...)
    Un coup d'oeil dans l'aide en ligne à Find, peut-être.
    Si tu comprends le principe et que tu as toujours un pb, tu nous reviens
    A+...

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    Bonjour à tous,

    Merci Gorfael ça fonctionne mais c'est lent, j'ai donc essayé avec FIND comme proposé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks("Editeur_ecn.xls").Worksheets("EENSART_REF").Activate
    For Each Cell In Range("A1:A65536")
    If Cell.Value = var Then
    Cells.Find(What:=var, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
    New_desfr = ActiveCell.Offset(0, 2) 'textbox de renvoie
    New_adddesfr = ActiveCell.Offset(0, 3) 'textbox de renvoie
    Le problème c'est ça bug à ce niveau et je ne comprends pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    New_adddesfr = ActiveCell.Offset(0, 3) 'textbox de renvoie

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Si tu utilises Find, tu ne dois pas boucler sur la colonne A, à mon avis. De plus, il n'est pas nécessaire d'activer la cellule avec Find,tu peux l'affecter à une variable. Cela pourrait donner un code ressemblant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim CelTrouvee as range
    set celtrouvee=range("a1:a" & rows.count).find(what:=...)
    if not celtrouvee is nothing then
        New_desfr = celtrouvee.Offset(0, 2) ' colonne B
        New_adddesfr = celtrouvee.Offset(0, 3) ' Colonne C
    endif
    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Jeyjey1 et le forum
    ...comme si le activecell.select ne servait à rien.
    Mais c'est exactement ça :
    Activecell est la cellule active : ActiveCell.Select est donc un pléonasme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each cell In Range("A1:A65536")
    If cell.Value = var Then 
    With cell
    New_desfr = .Offset(0, 2) 'textbox de renvoie
    New_adddesfr = .Offset(0, 3) 'textbox de renvoie
    End With
    Tu ne fais pas évoluer Activecell, mais Cell. Donc tu dois tout baser sur Cell.
    A+

Discussions similaires

  1. Problème avec des transaction
    Par Oluha dans le forum ASP
    Réponses: 16
    Dernier message: 01/03/2005, 15h40
  2. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17
  3. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49
  5. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26

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