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 :

Copier valeur d'une colonne à une autre sauf celle deja renseignée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Par défaut Copier valeur d'une colonne à une autre sauf celle deja renseignée
    Bonjour,

    Je butte sur une fonction à implementer dans mon projet.

    j'ai dans la colonne H (H3:H744) des valeurs calculées
    de type =AP89+AJ89+BW89+AD89

    J'ai dans la colonne G (G3:G744) eventuellements des valeurs saisies ou pas

    Est il possible en VBA, de pourvoir copier les valeurs de la colonne H (voir les formules presentes dans les cellules) vers la colonne G sauf les valeurs saisies.


    Merci pour votre aide

    A bientot

    gibtoul

  2. #2
    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
    Bonjour,

    Testes ce 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
    Sub exemple()
    Dim Derlg As Integer, x As Integer
    Dim TbG, TbH
    'Feuil2" à remplacer par le nom de ta feuille
    With Sheets("Feuil2")
      Derlg = .Range("G" & .Rows.Count).End(xlUp).Row 'dernière ligne renseignée en G
      TbG = .Range("G3:G" & Derlg) 'variable comprenant les valeurs de G
      TbH = .Range("H3:H" & Derlg) 'variable comprenant les valeurs de H
      For x = 1 To UBound(TbG)
        If TbG(x, 1) = "" Then TbG(x, 1) = TbH(x, 1)
      Next x
      .Range("I3").Resize(UBound(TbG), 1) = TbG
    End With
    End Sub
    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...)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Par défaut
    Bonsoir casefayere

    Merci pour ton aide à la resolution de mon bloquage.
    j'ai testé le code.

    Est-il possible de renseigner la colonne G sans passé par la colonne I

    Pour le dimensionnmenent , le test se fait sur la derniere cellule saisie de la colonne G; Est-il possible de figer le dimensionnement à la ligne 744

    A+

    Gibtoul

  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
    c'est un oubli, je l'ai fait pour un test, en respectant ce que tu dis, changes cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Range("I3").Resize(UBound(TbG), 1) = TbG
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Range("G3:G744") = TbG
    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
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Par défaut
    casefayere

    J'ai modifié le code mais j'ai un comportement anormale

    je te fois le fichier que j'ai modifié.

    La zone doit bien aller jusqu'à la ligne 744 mais je n'ai pas forcement des valeurs à renseigné que se soit sur G ou H

    Merci

    Gibtoul
    Fichiers attachés Fichiers attachés

  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
    Je ne vois pas de problème, normal les #N/A, tu veux obligatoirement aller à 744, c'est pour ça que je préfère trouver la dernière ligne renseignée.

    essayes comme ça :
    je laisse tomber ta ligne 744, ça sera automatique, je prends la dernière valeur de F (titre C), tu pourras changer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub exemple()
    Dim Derlg As Integer, x As Integer
    Dim TbG, TbH, y As Integer
    'Feuil2" à remplacer par le nom de ta feuille
    With Sheets("Feuil2")
      Derlg = .Range("F" & .Rows.Count).End(xlUp).Row 'dernière ligne renseignée en G
      TbG = .Range("G3:G" & Derlg) 'variable comprenant les valeurs de G
      TbH = .Range("H3:H" & Derlg) 'variable comprenant les valeurs de H
      For x = 1 To UBound(TbG)
        If TbG(x, 1) = "" Then TbG(x, 1) = TbH(x, 1)
      Next x
      .Range("G3:G" & Derlg) = TbG
    End With
    End Sub
    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...)

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 17h57
  2. MFC d'une colonne à une colonne et planning perpetuel
    Par mlegentil dans le forum Excel
    Réponses: 0
    Dernier message: 12/04/2014, 18h43
  3. Copier valeur non vide dans une colonne
    Par Toad08 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/03/2008, 22h40
  4. copie de valeurs d une colonne à une autre
    Par Mobistar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/01/2008, 17h48

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