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 :

un msgbox qui ne s'affiche pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut un msgbox qui ne s'affiche pas
    J'ai écrit un msgbox qui refuse de s'afficher vous auriez une idée pourquoi ?
    Alors le reste de mon code fonctionne
    C est le nom de la première occurence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Set cAutre = Cells.Find(What:="Séquences des amorces PCR", After:=c).Offset(1)
            cAutre.Select
            If Not cAutre Is Nothing Then
            Mat(i, 2) = Sequence(cAutre, "F")
            RSmarq!mar_seq_f = Mat(i, 2)
            Else: MsgBox "Il n'y a pas de séquence F" & c
            End If
            If Not cAutre Is Nothing Then
            Mat(i, 3) = Sequence(cAutre, "R")
            RSmarq!mar_seq_r = Mat(i, 3)
            Else: MsgBox "Il n'y a pas de séquence R" & c
            End If
    Merci d'avance

  2. #2
    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
    Else: MsgBox "Il n'y a pas de séquence F" & c
    Ecrit comme clea, c'est une étiquette pour un GOTO, et pas un else.

    la syntaxe correcte est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if condition then
      ....
     else
     ....
    endf
    et pas else:

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Nin
    Le problème est ailleurs : cAutre n'est pas nothing ... ++>> pas de msgbox ...

  4. #4
    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
    Nin
    Le problème est ailleurs : cAutre n'est pas nothing ... ++>> pas de msgbox ...
    . trop vite mais j'avais pensé à cette option sans checker...

    bonne journée.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut
    Je n'ai pas compris vos réponses.

    Le problème est ailleurs : cAutre n'est pas nothing ... ++>> pas de msgbox
    Mon test affiche le fait qu'il y a quelque chose dans cAutre
    alors il récupère l'info
    sinon il renvoie un msgbox avec le fait qu'il me manque des informations.

    Ce n'est pas le cas ?

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par soria_t Voir le message
    Je n'ai pas compris vos réponses.


    Mon test affiche le fait qu'il y a quelque chose dans cAutre
    alors il récupère l'info

    Bien ...

    Maintenant : Qu'est donc le mot clé Nothing ? (petit tour à faire dans ton aide en ligne)...

    Edit : je vais t'aider à comprendre (je préfère, en ce qui me concerne) à travers un petit exemple :

    Une textBox Text1 et un bouton de commande Command1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Command1_Click()
      Set toto = Text1
     If Not toto Is Nothing Then
       MsgBox "pas rien du tout, mais " & toto.Name & " meme si " & toto.Name & " ne contient rien"
     End If
    End Sub
    Réfléchis, ... à partir de là !

  7. #7
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut
    Et bien oui puisque j'ai besoin de passer par toutes les fiches qui démarrent par chaine1. Qui est définit comme "Nom du marqueur"

    Voilà.

    Je sais il y a un gros problème. Je fais des choses compliqué mais pour ce qui est simple je .

    Dur hein, mais ça ne m'explique pas comment contourner le problème du msgbox ?

  8. #8
    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
    J'ai corrigé ma réponse précédente. Jète un oeil

  9. #9
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut
    Qu'est ce que ça changerait fondamentalement dans mon code (à part 2 jours pour tout débugger oui je suis aussi lente)

    A propos je suis sous une version excel de 2002:

    Je vous donne le code de la sub au complet vous comprendrez peut être mieux (moi et les explications on est pas copains )

    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
     
     
    Private Sub Lecture()
    Dim Chaine1$, NbOccurrences As Integer, Mat(), RSmarq As Recordset, RSgene As Recordset
    Dim i As Integer, Pos As Integer, ListeChaines, j As Integer
    Dim c As Range, cSuivant As Range, cAutre As Range
    ' Chaîne permettant de repérer le nombre de fiches et le nom du marqueur
    Chaine1 = "Nom des marqueurs"
    NbOccurrences = WorksheetFunction.CountIf(Range("A:A"), Chaine1 & "*")
    ' Adapatation de Mat(), utilisée pour stocker les données à reporter dans la base.
    ReDim Mat(NbOccurrences - 1, 7)
    ' On initialise "c" comme la dernière cellule utilisée en colonne A. En effet, la méthode "Find" d'un objet "Range" (une plage de cellules) commence
    ' après la cellule indiquée comme référence. Si "c" était en ligne 1, c'est la seconde fiche qui serait trouvée en premier.
    Set c = Range("A" & ActiveSheet.UsedRange.Rows.Count + 1)
    ' RSmarq pour la table "tbl_marqueurs", RSgene pour "tbl_gene"
    Set RSmarq = DB.OpenRecordset("tbl_marqueurs")
    Set RSgene = DB.OpenRecordset("tbl_genes")
    'boucle permettant de passer par toutes les fiches
      For i = 0 To NbOccurrences - 1
      RSmarq.AddNew
        If RSmarq.RecordCount = 0 Then RSmarq!id_marqueur = 1
        ' Détermination de la cellule correspondant au début de chaque fiche, grâce à l'argument "After:=c"
        Set c = Cells.Find(What:=Chaine1, After:=c, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        Set cSuivant = Cells.FindNext(c)
        Pos = InStr(1, c, ":", vbTextCompare)
        Mat(i, 0) = Mid(c, Pos + 1 + IIf(Asc(Mid(c, Pos + 1, 1)) = 32 Or Asc(Mid(c, Pos + 1, 1)) = 160, 1, 0))
        RSmarq!mar_nom = Mat(i, 0)
        Set cAutre = Cells.Find(What:="Nom du gène", After:=c)
          If MemeFiche(c, cSuivant, cAutre) Then
          Pos = InStr(1, cAutre, ":", vbTextCompare)
          Mat(i, 1) = Mid(cAutre, Pos + 1 + IIf(Asc(Mid(cAutre, Pos + 1, 1)) = 32 Or Asc(Mid(cAutre, Pos + 1, 1)) = 160, 1, 0))
          RSgene.AddNew
          RSgene!gen_nom = Mat(i, 1)
          '            incrémente les deux bases et les mets en relation
          RSmarq!id_gene = RSgene!id_gene
          End If
       ....
     
      Set cAutre = Cells.Find(What:="Position de cartographie génétique", After:=c)
              If Not cAutre Is Nothing Then
                If MemeFiche(c, cSuivant, cAutre) Then
                  Pos = InStr(1, cAutre, ":", vbTextCompare)
                    If Pos <> Len(cAutre) Then
                      Mat(i, 6) = Mid(cAutre, Pos + 1 + IIf(Asc(Mid(cAutre, Pos + 1, 1)) = 32 Or Asc(Mid(cAutre, Pos + 1, 1)) = 160, 1, 0))
                      RSgene.Fields("CartoGen").Value = Mat(i, 6) & cAutre.Offset(1)
                    End If
                End If
              End If
     
        RSgene.Update
        RSmarq.Update
     
      Next
    End Sub
    Non je vous ai épargné tous le code. encore merci pour vos réposes ça donne envie de continuer

  10. #10
    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
    Je reviens au msgbox piskecéd'çaconparle
    Tu ajoutes cette ligne ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Loop While Not c Is Nothing And c.Address <> firstAddress And i < NbOccurrences - 1
              else
                MsgBox "Il n'y a pas de séquence F" & c
            End If
        End with
    Bonne soirée

    Edit
    Citation Envoyé par soria_t Voir le message
    Qu'est ce que ça changerait fondamentalementdans mon code

    Ca bug chez moi mais c'est normal :p. A propos je suis sous une version excel de 2002
    Pour le changement, seulement ta boucle for i = 1 to nboccurence -1 que tu remplaces par mon code.
    Et ça fonctionne sous VBA-97 -> 2003... Après, chais pas

  11. #11
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut
    Réfléchir avant d'agir: sentence merveilleuse dont je devrais me souvenir plus souvent

    Bon j'ai changer d'optique et j'ai décider qu'il valait mieux écrire toutes les données manquantes dans une feuille excel plutôt que des msgbox ( quand il y a plus de trois données manquantes, je vous explique pas la galère ).

    Donc voici ce que je développe à la place

    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
           'Anomalies
        Decal = 1
     
        Workbooks.Add
            With Range("A1:C1")
                .Font.Bold = True
                .HorizontalAlignment = xlCenter
            End With
            With Range("A1")
                .Value = "Marqueur"
                .Offset(0, 1) = "F"
                .Offset(0, 2) = "R"
                    For j = 0 To i - 1
                        If Mat(j, 2) = "" Then  ' "F"
                            .Offset(Decal) = Mat(j, 0)
                            .Offset(Decal, 1) = "Néant"
                            Decal = Decal + 1
                        End If
                        If Mat(j, 3) = "" Then  ' "R"
                            .Offset(Decal) = Mat(j, 0)
                            .Offset(Decal, 2) = "Néant"
                            'Il n'y a lieu d'incrémenter Decal que si l'info pour "F" me manquait pas également
                            If Mat(j, 2) <> "" Then Decal = Decal + 1
                        End If
                    Next
            End With

    Quelqu'un voit un problème avec mon code ?
    En tous cas il m'annonce une incompatibilité de type 5, étrange non ?

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

Discussions similaires

  1. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  2. pages qui ne s'affichent pas
    Par luck dans le forum ASP
    Réponses: 4
    Dernier message: 19/07/2004, 11h35
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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