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 :

Fonctionnement activecell sans sheets("feuil1").activate! [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut Fonctionnement activecell sans sheets("feuil1").activate!
    Bonsoir
    j'ai un userform avec des textbox et je voudrais récupérerdes cellules de différentes feuilles.
    Mais comment et est ce possible de se passer de l'activation de la feuille!
    C'est à dire ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sheets("BDMedical").Activate
    Dim Ligne As Integer
    For Ligne = 1 To Sheets("BDMedical").Range("A1").CurrentRegion.Rows.Count
        If Sheets("BDMedical").Range("A" & Ligne).Text = idpat Then
        Sheets("BDMedical").Range("A" & Ligne).Select
        End If
    Next Ligne
     
    Me.ttbActSport.Value = ActiveCell.Offset(0, 3).Value
    Me.ttbAntMedicaux.Value = ActiveCell.Offset(0, 4).Value
    Me.TtbAntChirugicaux.Value = ActiveCell.Offset(0, 5).Value
    Me.ttbAntFracturesEntorse.Value = ActiveCell.Offset(0, 6).Value
    Sheets("BDPatients").Activate
    Ce que je voudrais c'est savoir si je peux utiliser ActiveCell, sans activer la feuille?
    Mais je ne trouve pas la façon de l'écrire, c'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ttbActSport.Value = Sheets("BDMedical").ActiveCell.Offset(0, 3).Value
    ceci me donne l'erreur:
    erreur d'executoin '438':
    propriete ou methode non gérée par cette objet

    Je débute en vba

    Merci pour votre aide.
    Daniel

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    Offset(0, 3) --> même ligne , colonne 3,4,5,6...

    Colonne de début A --> 1 --> Col=1

    Cells(0,Col + 2) --> 1+2 --> 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'Me.ttbActSport.Value = ActiveCell.Offset(0, 3).Value
    Me.ttbActSport.Value = Sheets("BDMedical").Cells(0,Col + 2).Value
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    Merci jp
    Je vais essayer.
    Bonne soirée
    Daniel

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme tu fais une recherche sur une plage, je verrai plus ton code comme ceci :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
     
        With Worksheets("BDMedical"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        Set Cel = Plage.Find(idpat, , xlValues, xlWhole)
     
        If Not Cel Is Nothing Then
     
            Me.ttbActSport.Value = Cel.Offset(0, 3).Value
            Me.ttbAntMedicaux.Value = Cel.Offset(0, 4).Value
            Me.TtbAntChirugicaux.Value = Cel.Offset(0, 5).Value
            Me.ttbAntFracturesEntorse.Value = Cel.Offset(0, 6).Value
     
        End If
     
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    Bonjour,
    Merci Theze.
    Voici le code qui fonctionne pour moi:
    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
    Sub remplissage()
    Dim idpat, i
    Me.cbbCivilPat.Value = ActiveCell.Offset(0, -1).Value
    Me.ttbNbEnfantPat.Value = ActiveCell.Offset(0, 3).Value
    Me.ttbAdressePat.Value = ActiveCell.Offset(0, 4).Value
    Me.cbbCpPat.Value = ActiveCell.Offset(0, 5).Value
    Me.cbbVillePat.Value = ActiveCell.Offset(0, 6).Value
    Me.ttbTelepPat.Value = ActiveCell.Offset(0, 7).Value
    Me.ttbPortablePat.Value = ActiveCell.Offset(0, 8).Value
    Me.ttbEmailPat.Value = ActiveCell.Offset(0, 9).Value
    Me.ttbProfPat.Value = ActiveCell.Offset(0, 10).Value
    Me.cbbMedecin.Value = ActiveCell.Offset(0, 11).Value
    Me.ttbIdPat.Value = ActiveCell.Offset(0, -2).Value
    idpat = Me.ttbIdPat.Value
     
    'Sheets("BDMedical").Activate
    Dim Ligne As Integer
    Dim col As Integer
    For Ligne = 1 To Sheets("BDMedical").Range("A1").CurrentRegion.Rows.Count
        If Sheets("BDMedical").Range("A" & Ligne).Text = idpat Then
        Me.ttbActSport.Value = Sheets("BDMedical").Cells(Ligne, 5).Value
        Me.ttbAntMedicaux.Value = Sheets("BDMedical").Cells(Ligne, 6).Value
        Me.TtbAntChirugicaux.Value = Sheets("BDMedical").Cells(Ligne, 7).Value
        Me.ttbAntFracturesEntorse.Value = Sheets("BDMedical").Cells(Ligne, 8).Value
        Me.cbbLateralite.Value = Sheets("bdmedical").Cells(Ligne, 9).Value
        End If
    Next Ligne
    Sheets("BDPatients").Activate
    End Sub
    J'ai plusieurs feuille et un userform qui permet lors de la validation de remplir les feuilles, la feuille active est BDPatients.
    Et comme j'utilise l'offset, je cherche la dernière ligne vide de la feuille et je rends actif la cellule pour utiliser Offset.
    (Puis je change de feuille et je reviens sur la feuille BDPatients...)
    Mais pour cela il faut que la feuille soit active ce qui fait que l'affichage passe de feuille en feuille et cela me gêne!

    Daniel

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    c'est pour cela qu'un bon code n'active ni ne sélectionne rien
    mais travaille directement avec le pourtant simple modèle objet d'Excel !
    Juste en précisant le classeur, la feuille de calculs et la cellule … (Workbooks.Worksheets.Range)
    Si les feuilles sont situées dans le classeur contenant le code alors on peut directement commencer de la feuille …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/06/2008, 09h27
  2. Réponses: 2
    Dernier message: 27/06/2007, 11h57
  3. Faire fonctionner RoR sans ouvrir une session ?
    Par label22 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 03/05/2007, 14h23
  4. [VBA-E] Pb avec Worksheets("feuil1").Activate
    Par Friko dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/12/2006, 19h56
  5. Keydown sans la feuille active
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/10/2006, 15h02

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