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 :

Bug après la 1ère variable trouvées [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Par défaut Bug après la 1ère variable trouvées
    une boucle qui tourne et débogue après la 1ère variable trouvées copie les données de la 1 ère recherche mais lorsqu'il passe pour la 2ème recherche ne prend pas la 2ème variable du tableau comme élément de recherche
    voilà le code que j'utilise et merci d'avance pour votre aide
    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
    Sub test1()
     
    Dim c As Range
    Dim flag As Boolean
    Dim Nom As Variant
    Dim i&
     
    Sheets("Brut").Select
     
    '*************Copy données text1 dans feuille Data***********
        Nom = Array("text1", "text2", "text4", "text4", "text5)")
        Application.ScreenUpdating = False
       For i& = LBound(Nom) To UBound(Nom)
        For Each c In ActiveSheet.UsedRange
            If c.Value = Nom(i&) Then
                flag = True
                Exit For
            End If
        Next
           Range(c.Address).Select   ' pour recherche text1 c'est bon mais lorsqu'il cherche text2 s’arrête sur cette ligne 
           ActiveCell.Offset(0, 1).Select
           Range(Selection, Selection.End(xlDown)).Cut
     
    Sheets("Data").Select
     
              Cells(2, i& + 2).Select
              ActiveSheet.Paste
     
     
    Sheets("Brut").Select
     
    Application.CutCopyMode = False
     
    Next i&
     
    End Sub

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    Peut être une réponse en hors jeu vu mon niveau en VBA
    mais si tu supprime ce exit for en ligne 17 ?? je crois que tu demande sortir de ma boucle une fois trouve une valeur non ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i& = LBound(Nom) To UBound(Nom)
        For Each c In ActiveSheet.UsedRange
            If c.Value = Nom(i&) Then
                flag = True
                'Exit For ' à supprimer cette ligne
            End If
        Nextr

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Essaies :
    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
    Sub test1()
    Dim f As Worksheet
    Dim c As Range
    Dim flag As Boolean
    Dim Nom As Variant
    Dim i&
      Set f = Worksheets("Brut")
      Nom = Array("text1", "text2", "text3", "text4", "text5)")
      Application.ScreenUpdating = False
      For i = LBound(Nom) To UBound(Nom)
        For Each c In f.UsedRange
          If c.Value = Nom(i) Then
            flag = True
            Exit For
          End If
        Next
        If flag Then
          Set c = c.Offset(0, 1)
          f.Range(c, c.End(xlDown)).Cut Worksheets("Data").Cells(2, i + 2)
        End If
      Next i
      Application.ScreenUpdating = True
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il peut y avoir une explication simple : le texte du second item n'est pas trouvé.

    Sinon, pour ton code :
    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
    Sub test1()
       Dim c As Range
       Dim Nom As Variant
       Dim i As Long
     
       Sheets("Brut").Activate
       Nom = Array("text1", "text2", "text3", "text4", "text5")
     
       For i = LBound(Nom) To UBound(Nom)
          c = ActiveSheet.UsedRange.Find(Nom(i))
          If Not c Is Nothing Then
             Range(c.Offset(0, 1), c.Offset(0, 1).End(xlDown)).Cut
           Sheets("Data").Cells(2, i + 2).PasteSpecial(xlPasteAll)
       Next i
     
    End Sub
    Citation Envoyé par chammos Voir le message
    pour recherche text1 c'est bon mais lorsqu'il cherche text2 s’arrête sur cette ligne
    Quel est le message d'erreur renvoyé ?

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Si je peux me permettre.

    Set c =

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu as raison.
    J'ai oublié de préciser que je n'avais pas testé ce code et qu'il est probable qu'un peu de débugage soit nécessaire.

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Par défaut Merciiiiiiiiiiiiiiiiii c'est ok ça tourne bien
    Citation Envoyé par Menhir Voir le message
     
    Merciiiiiiiiiiiiiiiiii c'est ok ça tourne bien

  8. #8
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je me permets, Menhir

    Le mesage d'erreur devrait être
    "Variable Objet ou variable de bloc With non définie"
    (91)
    En effet, c est déclarée comme variable Range d'où la méthode Set pour l'affecter.

    Le code corrigé

    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
    Option Explicit
     
    Sub test1()
     
    Dim c As Range
    Dim Nom As Variant
    Dim i As Long
     
    Sheets("Brut").Activate
    Nom = Array("text1", "text2", "text3", "text4", "text5")
     
    For i = LBound(Nom) To UBound(Nom)
       Set c = ActiveSheet.UsedRange.Find(Nom(i))
       If Not c Is Nothing Then
            Range(c.Offset(0, 1), c.Offset(0, 1).End(xlDown)).Cut
            Sheets("Data").Cells(2, i + 2).PasteSpecial (xlPasteAll)
            Application.CutCopyMode = False
        End If
        Set c = Nothing
    Next i
     
    End Sub

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    J'avais aussi oublié un End If.

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

Discussions similaires

  1. Bug après modification d'une page asp
    Par breton dans le forum ASP
    Réponses: 7
    Dernier message: 28/02/2007, 13h24
  2. probleme classe apres ajout de variable
    Par croc14 dans le forum Visual C++
    Réponses: 6
    Dernier message: 11/08/2006, 21h03
  3. [VB.NET] Bug de dll : référence non trouvée
    Par boulete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/04/2006, 10h13
  4. [Formulaire] bug après gestion du NotInList
    Par Invité dans le forum Access
    Réponses: 9
    Dernier message: 26/09/2005, 18h46
  5. [NAV 2004] Bug après avoir renommé la corbeille
    Par Halleck dans le forum Windows
    Réponses: 2
    Dernier message: 29/02/2004, 21h06

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