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 :

Arreter boucle sur zone de liste


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
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Par défaut Arreter boucle sur zone de liste
    Bonjour à tous,

    Dans le code ci dessous dans sub importer j’incrémente un liste dans un userform formulaire puis dans le code enregistrer je veux que pour chaque fichier de la liste de fichier précédemment importer s'applique le sub lecture

    cela marche très bien mais arriver au dernier fichier de la liste la ou la variable "fichierchoisi" est Null ca me met un code erreur 94 utilisation incorrecte du null j'ai l'impression que la boucle ne se fini pas . je pense qu'il faut peut-être une fonction if mais je ne sais pas comment la formalisé.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Dim ligne_debut As Integer, colonne_debut As Integer
    Dim ligne_fin As Integer, colonne_fin As Integer
    Dim ligne_enCours As Integer, colonne_enCours As Integer
    Dim bookname As Variant, classeursource As Workbook
    Dim fichiersource As Variant, fichierchoisi As Variant
     
     
    Private Sub enregistrer_Click()
    Dim i As Integer
    ligne_debut = 2: colonne_fin = 1
    ligne_enCours = ligne_debut: colonne_enCours = colonne_debut
     
    Worksheets("Couverture").Range("A2:O119").Clear
     
     For Each fichierchoisi In liste_fichier.List
     
    lecture liste_fichier.List(i)
     
        Next fichierchoisi
    End Sub
     
    Private Sub fermer_Click()
    formulaire.Hide
    End Sub
     
    Private Sub importer_Click()
     
    fichierchoisi = Application.GetOpenFilename("Fichier Excel (*.xls),*.xls", , "Séléctionner un fichier Excel")
     
    If (LCase(fichierchoisi) <> "faux" And fichierchoisi <> "0") Then
        liste_fichier.AddItem (fichierchoisi)
    End If
    End Sub
     
    Private Sub lecture(fichier As String)
     
    Dim classeursource As Workbook
    Dim NomClasseurDestination  As String
    Dim FileExtStr As String
        FileExtStr = ".xlsx"
    NomClasseurOrigine = ThisWorkbook.Name
    chemincourant = ActiveWorkbook.Path & "\"
     
    Set classeursource = Application.Workbooks.Open(fichierchoisi)
    With ActiveSheet.Range("A1:O200").Copy
    ThisWorkbook.Activate
    ThisWorkbook.Sheets("Couverture").Range("A1").PasteSpecial
    'Lancement du tri, basé sur les données de la colonne A en ordre croissant
    Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
     
    If Workbooks.Count = 2 Then
    For i = 1 To 2
    If Workbooks(i).Name <> ThisWorkbook.Name Then fichiersource = Workbooks(i).Name
    bookname = Left(Right(fichiersource, Len(fichiersource) - 0), 13)
    Next i
    Workbooks(fichiersource).Close savechanges:=False
    End If
    ActiveWorkbook.SaveCopyAs chemincourant & (bookname) & FileExtStr
     
    End With
    End Sub

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour amandon,

    Afin de repérer à quel niveau se situe l'erreur, je te conseille de créer une variable numérique que tu incrémentes de 1 à chaque boucle. En comparant avec le nombre d'éléments composant ta liste tu devrais pouvoir repérer d'où vient l'erreur, ou bien d'utiliser Debug.Print, qui pourrait être mieux je pense.

    L'important c'est de savoir avec exactitude où se situe ton erreur, et non pas un "je pense...". Ca m'est arrivé de penser que l'erreur se situait sur la ligne en question, alors qu'en réalité elle se situait au-dessus suite à un appel hasardeux.

    Par ailleurs, j'ai utilisé parfois la manipulation d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    On Error GoTo errorhandler
    'Code générateur d'erreur
    errorhandler:
    If Err.Number = "Ton_Numéro_d'Erreur" Then
       'Quoi faire en cas d'erreur
    Else
       'Continue normalement
    End If

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

Discussions similaires

  1. Cliquer sur zone de liste pour valider la valeur
    Par gwendk dans le forum Access
    Réponses: 7
    Dernier message: 15/05/2006, 15h13
  2. clic sur zone de liste pour validation
    Par ormoy28 dans le forum Access
    Réponses: 7
    Dernier message: 11/05/2006, 11h03
  3. Question sur Zone de Liste !
    Par Orakle dans le forum IHM
    Réponses: 3
    Dernier message: 25/11/2005, 09h38
  4. Acess2k3: Bande noire sur zone de liste différente
    Par uloaccess dans le forum Access
    Réponses: 5
    Dernier message: 28/10/2005, 17h57
  5. Evènement sur zone de liste
    Par Mout85 dans le forum IHM
    Réponses: 3
    Dernier message: 20/06/2005, 11h44

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