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 avec un code VBA - Les données ne sont pas rapatriées correctement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Problème avec un code VBA - Les données ne sont pas rapatriées correctement
    Bonjour,

    J'ai mis en place le code suivant qui me permet de rapatrier des données dans un tableau Excel. Cependant, je rencontre un problème. Une fois la première donnée saisie, les autres ne s'inscrivent pas en dessous de la première, mais ailleurs dans le tableau. La première donnée arrive en F25, la deuxième devrait logiquement arriver en F26, mais ça ne fonctionne pas. Pourriez-vous me dire ou ai-je commis une erreur ?
    Je vous en remercie par avance :

    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
     
    Private Sub CmbOK_Click()
    Dim vMessageErreur As String
    Dim vErreur As Integer
    vMessageErreur = ""
    vErreur = 0
     
    If UF1.CmbCat.Value = "" Then
        vErreur = 1
        vMessageErreur = vMessageErreur + Chr(10) + "Un code"
    End If
    If vErreur = 1 Then
        MsgBox "Vous avez oublié" + vMessageErreur, , "Erreur"
    Exit Sub
    End If
    Sheets("Lot 1 - Abscis").Activate
    If Range("F25") = "" Then
        Range("F25").Select
    Else
        Range("F24").End(xlDown).Select
        ActiveCell.Offset(1, 0).Range("F23").Select
    End If
     
    ActiveCell.Value = UF1.CmbCat.Value
    ActiveCell.Offset(0, 1).Value = UF1.LstFS.List
    ActiveCell.Offset(0, 2).Value = UF1.TxtNb1.Value
    ActiveCell.Offset(0, 3).Value = UF1.LstHF.List
    ActiveCell.Offset(0, 4).Value = UF1.TxtNb2.Value
     
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    la cellule F26 est inatteignable :  juste transcrire la "logique" des lignes de code n°17 à 22 pour comprendre,
    en particulier la ligne n°21, quelle est donc son utilité ?‼

    Étudier Cells(Rows.Count, 6).End(xlUp).Offset(1)

    Les lignes n°16 à 28 pouvant être remplacées par une seule ligne de code !

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …


  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Marc,

    Merci pour votre réponse. Mais pourquoi la cellule F26 est inatteignable ?
    Pour la ligne 21 du code, j'ai recopié un code et je l'ai adapté, cette ligne était présente alors j'ai fait avec

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Alors c'est raté :  vérifier donc la cellule activée par cette ligne n°21 !

    Relire mon précédent message suite à son édition …

  5. #5
    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
    Ce que fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("F24").End(xlDown).Select
        ActiveCell.Offset(1, 0).Range("F23").Select
    C'est de sélectionnée la cellule précédent la première cellule vide en-dessous de F24.
    Puis de sélectionner la cellule se trouvant 22 lignes plus bas et 5 colonnes à droite de la cellule vide juste en dessous.

    Je doute que ce soit ce que tu souhaites.
    Mais ne sachant pas ce que tu souhaites, difficile de le corriger.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai tenté de faire ça mais j'ai un message d'erreur : La méthode Range de l'objet global a échoué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Range("F24").End(xlDown).Select
        Range(Rows.Count, 6).End(xlUp).Offset(0, 1).Select
    Bonjour Menhir,

    Merci pour votre contribution. Ce que je cherche à faire, c'est que une fois la cellule F25 est remplie, la nouvelle saisie se fasse à partir de F26, la troisième F27 et ainsi de suite

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Déjà sans indiquer quelle ligne déclenche le message d'erreur, on ne joue pas ici aux devinettes ! …

    A quoi sert donc la ligne n°2 ?!
    La ligne n°3 a une erreur : juste lire le post #2 et l'aide VBA interne de la propriété Offset

    Rappel :  un bon code n'active ni ne sélectionne rien - inutile dans 99% des cas ! - il doit travailler directement avec les objets.

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Comment, déjà et entre autres, peut-on "tenter" ce que je mets ici en rouge dans ton code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("F24").End(xlDown).Select
        Range(Rows.Count, 6).End(xlUp).Offset(0, 1).Select
    Je ne reviendrai personnellement ici que lorsque tu auras bien voulu au moins apprendre la notation de l'initialisation d'un objet Range. C'est un minimum

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

Discussions similaires

  1. [AC-2003] Probléme avec un code Vba
    Par taz devil dans le forum IHM
    Réponses: 0
    Dernier message: 18/09/2015, 15h47
  2. [XL-2010] Problème avec le code VBA
    Par mimiaqu dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2013, 20h52
  3. Réponses: 6
    Dernier message: 15/08/2008, 12h09
  4. Problème avec un code VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/08/2008, 13h57
  5. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43

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