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 boucle With


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Par défaut Problème boucle With
    Bonjour,

    Je me permets de poster ce message car je n'arrive pas trouver l'erreur dans mon code.

    Le voici :

    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
    With Worksheets("Etat - Data")
            LigneCourante = 9
            Do While .Cells(LigneCourante, 1).Value <> ""
     
                If AncienNom = "" Then
     
                    'Initialisation des variables
                    LigneDebut = LigneCourante
                    AncienNom = .Cells(LigneCourante, 1).Value
     
                End If
     
                ' Si les informations ont changé : calcul de la ligne fin
                NouveauNom = .Cells(LigneCourante, 1).Value
                If NouveauNom <> AncienNom Then
     
                    LigneFin = LigneCourante - 1
                    DonneesACumuler = True
                    AlimenteFeuille AncienNom, LigneDebut, LigneFin, DonneesACumuler
                    LigneDebut = LigneFin + 1
     
                    LigneFin = LigneCourante
                    AncienNom = NouveauNom
                End If
     
                ' Passage à la ligne suivante
                LigneCourante = LigneCourante + 1
     
            Loop
     
        End With
    Je vous poste le morceau de code où je pense que ce trouve l'erreur car mon programme est assez long. En effet lorsque je lance le programme l'erreur suivante apparaît:
    "Variable objet ou Variable de bloc With non définie"

    Pouvez-vous m'aidez ? Merci de votre compréhension

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour dylan.pascal,

    Cette partie de ton code est bon.
    Où se situe l'erreur ?

    Attention (je ne connais pas le fonctionnel... mais...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AncienNom = NouveauNom = .Cells(LigneCourante, 1).Value
    Cordialement,
    Kimy

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Par défaut
    Eh bien je ne sais pas où se situe l'erreur car l’éditeur ne me renvoie à aucune ligne. A part le message "Erreur d’exécution 91";

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir

    Citation Envoyé par dylan.pascal Voir le message
    Eh bien je ne sais pas où se situe l'erreur car l’éditeur ne me renvoie à aucune ligne. A part le message "Erreur d’exécution 91";
    Hors exécution, as-tu une erreur en debogage ?

    Quand le message d'erreur s'affiche tu as habituellement un bouton pour ouvrir le debogueur, et voir la ligne qui pose pb.
    Cela pourrait être une utilisation d'une variable objet vide. Variable objet déclarée mais pas initialisée.

    Tu peux aussi consulter : Variable objet ou variable bloc With non définie chez Microsoft.

    Cordialement,

    pgz

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Par défaut
    Merci pour votre aide, l'erreur n’apparaît plus .

    Sauf que j'ai une autre erreur ^^ , au niveau de la connexion à la base de données. J'essaie de me connecter à une base Oracle 11g et j'ai un problème ODBC, pourtant j'ai bien déclaré le pilote dans le panneau de configuration. Et là il me dis que : "[Microsoft][ODBC driver for Oracle][Oracle]ORA-12154: TNS: could not resolve the connect identifier specified". Ce que je comprends pas, c'est que dans mon tnsnames.ora , il y a bien la chaîne de connexion spécifié. J'utilise bien les bons logs de connexion aussi alors je ne comprends pas pourquoi ça ne marche pas.....

    Pouvez-vous m'aider ?

    Cordialement,

    Dylan.

  6. #6
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut boucle...
    "Variable objet ou Variable de bloc With non définie"
    bonjour,
    en regardant ta "boucle" (Tant que... ), normalement le "premier élément" du "tant que" est initialisé avant "While..." condition d'entrée , ensuite le traitement de l'élément courant puis initialisation de l'élément suivant et "Wend" voilà l’algorithme de cette itération. Donc je te propose cette écriture que j'ai essayée :

    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
    With Worksheets("feuil1")
            LigneCourante = 9
            lignedebut = LigneCourante
            AncienNom = .Cells(LigneCourante, 1).Value
            While .Cells(LigneCourante, 1).Value <> ""
     
           '     If AncienNom = "" Then
     
                    'Initialisation des variables
           '         LigneDebut = LigneCourante
           '         AncienNom = .Cells(LigneCourante, 1).Value
     
           '     End If
     
                ' Si les informations ont changé : calcul de la ligne fin
                NouveauNom = .Cells(LigneCourante, 1).Value
                If NouveauNom <> AncienNom Then
     
                    LigneFin = LigneCourante - 1
                    DonneesACumuler = True
                    alimentefeuille AncienNom, lignedebut, LigneFin, DonneesACumuler
                    lignedebut = LigneFin + 1
     
                    LigneFin = LigneCourante
                    AncienNom = NouveauNom
                End If
     
                ' Passage à la ligne suivante
                LigneCourante = LigneCourante + 1
     
            Wend
     
        End With
    End Sub
     
    Function alimentefeuille(a, b, c, d)
     
    End Function
    Par contre, je n'ai pas la fonction il faut faire attention aux effets de bord!! en déclarant les paramètres si possible passage par valeur.
    Attention "With..." n'est pas une boucle mais un bloc d'instructions.

    Geogeo70

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Par défaut
    Merci pour ta réponse, j'ai apporté les améliorations que tu as fais mais maintenant j'ai une erreur d'Automation. La Références OLE Automation est pourtant bien activée

  8. #8
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    re,

    Peut être une utilisation d'un objet (ex une affectation) au lieu d'une propriété de cet objet?

    comme je n'ai pas d'erreur c'est certainement dans la fonction. Voir si par exemple un "range" doit être affecté avec set...

    geogeo70

Discussions similaires

  1. [XL-2007] Problème boucle with
    Par chombriko dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/05/2012, 16h41
  2. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  3. [XSL] problème boucle
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/04/2006, 16h55
  4. Problème boucle while et evenement
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 30/03/2006, 18h11
  5. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36

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