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 :

Remplissage de cellules par incrément à partir de la première vide


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
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Par défaut Remplissage de cellules par incrément à partir de la première vide
    Bonjour,

    Je souhaite qu'en cliquant sur un bouton de commande, le contenu d'un combobox vienne s'insérer dans une cellule d'une feuille excel.
    J'aimerais que cette cellule soit la première vide de la colonne A.

    Pour l'instant mon code me permet de remplir les lignes les unes après les autres avec une itération simple mais j'aimerais savoir s'il est possible d'écrire un code qui choisisse la cellule à remplir en s'assurant qu'elle est à l'origine vide et que celle immédiatement au dessus est remplie....
    Je ne sais pas si je suis très clair mais peut-être quelqu'un arrivera-t-il à me comprendre...

    Merci d'avance.

    pour info voila mon code actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Ligne as integer
    Ligne=7 'la ligne 7 est en effet la première ligne vide et à remplir de ma feuille
     
    Private Sub Ajoutercmd_Click()
        MsgBox ("Le matériel '" & Foragebox.Value & "' a été ajouté au matériel nécessaire sur le chantier")
        Worksheets("matériel").Cells(Ligne, 1).Value = Foragebox.Value
        Ligne = Ligne + 1
        Foragebox.Value = O
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Il te suffit d'intégrer 2 conditions, ce code devrait t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For Each cel In Range("A:A")
    If cel.Row <> 1 Then
        If cel = "" And cel.Offset(0, -1) <> "" Then
        cel = MAVALEUR
        End If
    Else
        If cel = "" Then
        cel = MAVALEUR
        End If
    End If
    Next

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A65535").End(xlUp).Offset(1, 0) = "toto"

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    déjà bonsoir à tous,

    à fring,
    Range("A65535").End(xlUp).Offset(1, 0) = "toto"
    y a t'il une différence importante entre ta proposition ci-dessus ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").End(xldown).Offset(1, 0) = "toto"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    La différence principale est celle-ci, supposons les cellules suivantes :
    • A1...Toto
    • A2...Titi
    • A3...Tata
    • A4
    • A5...Tutu
    • A6...Toto
    • A7
    • A8
    • etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").End(xldown).Offset(1, 0) = "toto"
    va inscrire "toto" dans la cellule A4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A65535").End(xlUp).Offset(1, 0) = "toto"
    va inscrire "toto" dans la cellule A7

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Ok merci, je ferais gaffe car ce code je l'ai à foison (j'exagère)

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Pour être tout a fait correcte, malgré que Range("A65535") sera valable dans 99,999% des cas, cela va coincer sur un très gros tableau réalisé sur excel 2007 qui permet 1.048.576 lignes (65.536 lignes sur les versions antérieures)

    Pour que la syntaxe soit opérationnelle peu importe la version du classeur, il est préférable de prendre l'habitude de l'écrire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Rows.Count).End(xlUp)
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Rows.Count, 1).End(xlUp)

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

Discussions similaires

  1. [XL-2010] Mail automatique conditionné par le remplissage de cellules
    Par LaKoupe dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/09/2013, 15h58
  2. [XL-2003] Remplissage d'une cellule par une couleur
    Par Dagzdag dans le forum Excel
    Réponses: 2
    Dernier message: 31/10/2012, 11h22
  3. [XL-2007] Incrémentation de cellule par rapport à une autre
    Par schmitx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2010, 11h25
  4. Hauteur de cellule ajustée par incrément
    Par ishar6 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 08/09/2007, 20h57
  5. Réponses: 11
    Dernier message: 04/08/2003, 15h30

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