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/coller vers autre classeur + incrementation =rien


Sujet :

Macros et VBA Excel

  1. #21
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 2
    Points
    2
    Par défaut
    Oui, bien sur, j'ai fais touche F1 et F8 il y a même des définitions indisponibles.
    Je ne comprends pas comment il sait l'endroit ou coller les cellules copier puisque c'est pas renseigné (et pourtant il le fait bien)!

    Ça me prends un temps fou pour comprendre deux mots. Je suis reconnaissant de ton travail et du suivi de ma demande.
    J’espère que tu ne m'en veut pas de mon bas niveau et que tu comprends que c'est quelques chose que je découvre car j'en ai besoin momentanément
    pour me simplifier la vie (en règle générale je suis plus expérimenté sur la technique du bâtiment conception/réalisation, c'est à 10000 lieux du code VBA)

    Merci encore.
    Fred

  2. #22
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Bonjour,

    Petite explication simplifiée (PS: lire le lien sur les tableaux) :
    Tout est abordable même avec un niveau débutant ou intermédiaire ; tu connais l'objet Cells => Cells(ligne, colonne) => si je veux B3 -> Cells(3, 2)
    donc pour placer les valeurs au bon endroit j'ai utilisé un tableau à une dimension (Array), une variable pour la dernière ligne, l'objet Cells et une boucle

    • un Array à une dimension se lit en ligne, chaque valeur est indiqué par un indice dans le tableau
    l'indice d'un Array commence par défaut par 0; ici on à 3 valeurs donc on aura les indices 0 , 1 et 2
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TABuneDim = Array("toto", "titi", "tutu")
    For i = 0 to 2
       Debug.Print TABuneDim(i) 'en donnant l'indice on obtient les valeurs
    Next
    • DerL => code de dernière ligne pour la position de la dernière ligne vide

    • utilisation de l'objet Cells pour la 1ère position à copier, donc ici la 3è colonne nous intéresse => Cells(DerL, 3)

    Pour reprendre l'exemple du dessus avec la boucle on aura les indices 0, 1, 2 (i la variable de la boucle et en même temps de l'Array)
    => Cells(Derl, 3 + i) cela donne Cells(Derl, 3 + 0) puis Cells(Derl, 3 + 1) puis Cells(Derl, 3 + 2) etc … selon la taille du tableau

    En utilisant la boucle pour donner l'indice du tableau mélanger à la position de Cells, on va créer un décalage,
    et la valeur sera copié sous condition qu'elle ne soit pas vide, vide représenté par 2 guillemets cf code ci-dessous

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        DerL = Sheets(1).Cells(Rows.Count, 3).End(xlUp)(2).Row
        InfosClients = Array("Valeur1", "Valeur2", "Valeur3", "", "Valeur4", "", "", "Valeur5", "", "Valeur6", "Valeur7")
     
        For i = LBound(InfosClients) To UBound(InfosClients)
            MsgBox InfosClients(i)
            If InfosClients(j) > "" Then ThisWorkbook.Sheets(1).Cells(DerL, 3 + i).Value = InfosClients(i)
        Next
            Cells(1).Resize(, UBound(InfosClients)+ 1) = InfosClients 'exemple de copie en ligne d'un Array 
    End Sub
    Edit : petite correction en ligne 9 du code + modif texte
    Voilà

Discussions similaires

  1. Copier/coller vers autre classeur
    Par aacmweb dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/07/2016, 12h34
  2. [XL-2010] Copier-coller d'un classeur vers un autre et de plage différentes
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/01/2015, 15h57
  3. Copier coller vers autre feuille
    Par j0joo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/11/2014, 09h26
  4. [XL-2010] Copier coller vers un autre classeur
    Par lilmonie dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 15/10/2014, 15h45
  5. Syntaxe Copier/coller vers un autre fichier dans VBA.
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/01/2009, 10h49

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