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 :

La méthode 'range' de l'objet worksheet à échoué


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Par défaut La méthode 'range' de l'objet worksheet à échoué
    Bonjour le forum

    lors du transfère des données selon les critères d'une feuille a l'autres feuille j'ai un message d'erreur indiqué au titre de ce poste dans la partie coloré voici le 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
    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
    Sub imporg()
    Dim montab As Variant, recherche As String
    Dim plage As Range, Crit As Variant
    Dim t As Integer
    Dim VarDerLigne As Integer
    Dim VarPlageList As String
    Dim cel As Range
    
    
    If Feuil1.OptionButton1 = True Then
    recherche = "01"
    End If
    VarDerLigne = Sheets("Imprim").Range("A65536").End(xlUp).Row
    VarPlageList = Sheets("Imprim").Range("A8:C" & VarDerLigne).Address
    
     'Feuil1.ListBox2.Clear
    With Feuil6 'Sheets("Recouvrement")
        'je recherche dans ma colonne A à partir de A2 jusqu'à la dernière ligne utilisée
        Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            'pour chaque cellule de ma plage
            For Each cel In plage
                If cel <> "" Then
                    'je découpe ma chaine de caractere en fonction des /
                    montab = Split(cel.Value, "/")
                    Crit = Split(cel.Value, "/")
                    'ici montab(2) correspond bien à 2012
                    'donc je met dans ma listbox la valeur de la colonne C correspondante
                    On Error Resume Next
                    If montab(1) = recherche And Me.TextBox1.Value = Crit(2) Then
                    On Error GoTo 0
                     With Feuil2
                    .Range("A" & VarPlageList) = cel.Offset(0, 0).Value
                    .Range("B" & VarPlageList) = cel.Offset(0, 2).Value
                    .Range("C" & VarPlageList) = cel.Offset(0, 4).Value
                    
    End With
    End If
    End If
    Next cel
    End With
    End Sub

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VarPlageList = Sheets("Imprim").Range("A8:C" & VarDerLigne).Address
    Ta variable VarPlageList est égale à une adresse telle que $A$8:$C$10
    Or dans ce bloc,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Feuil2
    .Range("A" & VarPlageList) = cel.Offset(0, 0).Value
    .Range("B" & VarPlageList) = cel.Offset(0, 2).Value
    .Range("C" & VarPlageList) = cel.Offset(0, 4).Value        
    End With
    tu ajoutes la lettre d'une colonne avec cette adresse ce qui donnera pour la première ligne "A$A$8:$C$10" ce qui semble curieux comme adresse.

    Attention aussi que tu as imbriqué un bloc With Feuil2 dans un autre bloc With Feuil6 (ligne 17 du code que tu as publié.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Par défaut
    Merci beaucoup Philippe

    Pour l'adresse j'ai voulu simplement spécifier la ou il doit enregistrer les données
    dans la feuille "Imprim" .

    pour les deux With imbriqué le premier c'est avec la feuille ou se trouve les données le deuxième c'est la feuille de destination.

    vraiment j'ai tous essayé mais ça coince toujours.

    Merci encore

    Salut

    j'ai refait le code de cette façon il marche mais le problème c'est qu'il importe une seul ligne alors que dans ma feuille il y a plus 40 lignes repndants au critere de recherche pourtant dans le code il y a next.

    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
    Dim plage As Range, Crit As Variant
    Dim t As Integer
    Dim VarDerLigne As Integer
    Dim VarPlageList As String
    Dim cel As Range
     
     
    If Feuil1.OptionButton1 = True Then
    recherche = "01"
    End If
    VarDerLigne = Sheets("Imprim").Range("A65536").End(xlUp).Row + 1
    'VarPlageList = Sheets("Imprim").Range("A8:C" & VarDerLigne).Address
     
     'Feuil1.ListBox2.Clear
    With Feuil6
        'je recherche dans ma colonne A à partir de A2 jusqu'à la dernière ligne utilisée
        Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            'pour chaque cellule de ma plage
            For Each cel In plage
                If cel <> "" Then
                    'je découpe ma chaine de caractere en fonction des /
                    montab = Split(cel.Value, "/")
                    Crit = Split(cel.Value, "/")
                    'ici montab(2) correspond bien à 2012
                    'donc je met dans ma listbox la valeur de la colonne C correspondante
                     On Error Resume Next
                    If montab(1) = recherche And Me.TextBox1.Value = Crit(2) Then
                     On Error GoTo 0
                      With Worksheets("Imprim") 'With Feuil2
                       .Cells(VarDerLigne, 1).Value = cel.Offset(0, 0).Value
                       .Cells(VarDerLigne, 2).Value = cel.Offset(0, 2).Value
                       .Cells(VarDerLigne, 3).Value = cel.Offset(0, 4).Valu
     
    End With
    End If
    End If
    Next cel
    End With

    j'attend avec impatience vos précieuses réponses
    merci encore

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne peux pas faire de test mais à la lecture de ton code, je constate que la variable VarDerLigne étant en dehors de la boucle For Each cel In plage garde la même valeur donc tu écris Cel sur la même ligne.
    Il faudrait donc incrémenté de 1, juste après ou juste avant le bloc With Worksheets("Imprim"), la ligne VarDerLigne = VarDerLigne + 1
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Par défaut
    bonjour et Merci phillipe

    on ajoutant 1 a la variable varderligne ça marche bien

    bonne journée a tous le monde

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

Discussions similaires

  1. [XL-2007] erreur: "la méthode .Range de l'objet worksheet a échoué"
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 28/10/2010, 09h08
  2. Réponses: 3
    Dernier message: 16/11/2008, 00h30
  3. erreur La méthode 'Range' de l'objet '_Global' a échoué
    Par mahboub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2006, 20h46
  4. [VBA-E]La méthode 'Range' de l'objet '_Global' a échoué
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/02/2006, 16h00
  5. Réponses: 4
    Dernier message: 20/01/2006, 15h53

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