Macro copier-coller deplacer sur la droite si cellule pleine
Résolu
fagots
Messages postés
92
Date d'inscription
Statut
Membre
Dernière intervention
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Je recherche une macro pour copier la cellule A1 de la feuille 1 d'un classeur "macro" et la coller sur la feuille "résultat" en A1 du classeur "graph". Mais si celle-ci n'est pas vide décaler vers la droite etc.
Fagots
Fagots
A voir également:
- Macro copier-coller deplacer sur la droite si cellule pleine
- Déplacer colonne excel - Guide
- Boite gmail pleine - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Excel cellule couleur si condition texte - Guide
27 réponses
Bonjour,
Voici un exemple de procédure à adapter selon vos classeurs :
Voici un exemple de procédure à adapter selon vos classeurs :
Sub Importer_plage_A1() Dim objcible As Workbook, objsource As Workbook Dim cel As Variant, c As Long Set objsource = Workbooks(nomclassuersource.xlsm) Set objcible = Workbooks(nomclassuercible.xlsx) Application.ScreenUpdating = False nucol = objcible.Sheets(1).Cells(1,Rows(1).Cells.Count).End(xlUp).Column objsource.Sheets(1).Range("A1 ").copy Destination := objcible.Sheets(1).Cells(1,nucol) Set objcible = Nothing Set objsource = Nothing Application.ScreenUpdating = True End Sub
Bonjour ,
Ce doit-être 2 lignes de code :
Ce doit-être 2 lignes de code :
nucol = objcible.Sheets(1).Cells(1,Rows(1).Cells.Count).End(xlUp).Column objsource.Sheets(1).Range("A1 ").copy Destination := objcible.Sheets(1).Cells(1,nucol)
Bonjour,
Une petite erreur de code m'a échappée, la ligne correcte pour la variable [nucol]:
Une petite erreur de code m'a échappée, la ligne correcte pour la variable [nucol]:
nucol = objcible.Sheets(1).Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column + 1
Bonjour,
C'est normal le nom du classeur doit être écrit entre guillemet (je pensais que vous le saviez, désolé):
Note : il va de soi que les 2 classeurs sont ouverts.
Salutations.
Le Pingou
C'est normal le nom du classeur doit être écrit entre guillemet (je pensais que vous le saviez, désolé):
Set objsource = Workbooks("fichier2.xlsm")
Note : il va de soi que les 2 classeurs sont ouverts.
Salutations.
Le Pingou
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Derniere petite question dans la macro donnée, comment faire pour coller uniquement la valeur de la cellule A1?
merci de votre aide
Derniere petite question dans la macro donnée, comment faire pour coller uniquement la valeur de la cellule A1?
merci de votre aide
Bonjour,
Remplacer cette ligne
Remplacer cette ligne
objsource.Sheets(1).Range("A1 ").copy Destination := objcible.Sheets(1).Cells(1,nucol)Par ces 2 lignes :
objsource.Sheets(1).Range("A1 ").Copy objcible.Sheets(1).Cells(1,nucol).PasteSpecial xlPasteValues
Dans le cas ou j'ai un fichier source "fichier1" et que dans ce fichier la ou les cellules à copier s'acrément elles aussi en collone +1.
Exmple. Mois janvier résultat à prendre cellule A1, mois de février résultat à prendre en cellule A2 etc. peut-on faire, si oui comment l'ajouter dans la macro excitante du dessus?
Merci de votre aide
Exmple. Mois janvier résultat à prendre cellule A1, mois de février résultat à prendre en cellule A2 etc. peut-on faire, si oui comment l'ajouter dans la macro excitante du dessus?
Merci de votre aide
Bonjour,
Dans ce cas il faut modifier la manière de travaillé de la procédure.
Comme j'ai l'impression qu'après chaque réponse il y a une nouvelle question, alors je vais attendre un petit peu pour la réponse... !
Dans ce cas il faut modifier la manière de travaillé de la procédure.
Comme j'ai l'impression qu'après chaque réponse il y a une nouvelle question, alors je vais attendre un petit peu pour la réponse... !
Bonjour,
Une question, comment je fais pour savoir quelle cellule de la ligne 1 je dois copier/coller sur l'autre classeur ?
Si vous dite la dernière, alors comment savoir si cela n'a pas déjà été réalisé ?
Une question, comment je fais pour savoir quelle cellule de la ligne 1 je dois copier/coller sur l'autre classeur ?
Si vous dite la dernière, alors comment savoir si cela n'a pas déjà été réalisé ?
Bonjour,
C'est bien la dernière cellule de la ligne 1 du classeur source à copier/coller sur le classeur cible.
Effectivement nous pouvons nous poser la question de savoir si cela n'a pas déjà été réalisé.
Cela viendra dans ma gestion de mise à jour de mon classeur cible. J'identifie dan mon fichier cible les dates de mise à jour.
Les résultats sont au mois. Donc, si je fais ma manip deux cela va me copier /coller deux fois les même chiffres sur deux mois différents.
D'ou l'importance pour moi d'avoir une gestion rigoureuse de l'alimentation de mon fichier cible par le fichier source.
Salutations
fagots
C'est bien la dernière cellule de la ligne 1 du classeur source à copier/coller sur le classeur cible.
Effectivement nous pouvons nous poser la question de savoir si cela n'a pas déjà été réalisé.
Cela viendra dans ma gestion de mise à jour de mon classeur cible. J'identifie dan mon fichier cible les dates de mise à jour.
Les résultats sont au mois. Donc, si je fais ma manip deux cela va me copier /coller deux fois les même chiffres sur deux mois différents.
D'ou l'importance pour moi d'avoir une gestion rigoureuse de l'alimentation de mon fichier cible par le fichier source.
Salutations
fagots
bonjour
Tien pour jouer avec une boucle
Sub testColonne()
Feuil1.Select
For L = 2 To 29
Range("A" & L).Copy
Nucol = Feuil2.Cells(L, Columns.Count).End(xlToLeft).Column + 1
Feuil2.Cells(L, Nucol).PasteSpecial xlPasteValues
Next
End Sub
A+
Maurice
Tien pour jouer avec une boucle
Sub testColonne()
Feuil1.Select
For L = 2 To 29
Range("A" & L).Copy
Nucol = Feuil2.Cells(L, Columns.Count).End(xlToLeft).Column + 1
Feuil2.Cells(L, Nucol).PasteSpecial xlPasteValues
Next
End Sub
A+
Maurice
Bonjour
une petite modife
Sub testColonne()
Feuil1.Select
For L = 2 To 29
Col = Cells(L, Columns.Count).End(xlToLeft).Column
Cells(L, Col).Copy
Nucol = Feuil2.Cells(L, Columns.Count).End(xlToLeft).Column + 1
Feuil2.Cells(L, Nucol).PasteSpecial xlPasteValues
Next
End Sub
A+
Maurice
une petite modife
Sub testColonne()
Feuil1.Select
For L = 2 To 29
Col = Cells(L, Columns.Count).End(xlToLeft).Column
Cells(L, Col).Copy
Nucol = Feuil2.Cells(L, Columns.Count).End(xlToLeft).Column + 1
Feuil2.Cells(L, Nucol).PasteSpecial xlPasteValues
Next
End Sub
A+
Maurice
Bonjour fagots,
Merci pour l'explication (message 17 de 09 :.53)
Je regarde le problème en fin de journée et la réponse suivra.
Merci pour l'explication (message 17 de 09 :.53)
Je regarde le problème en fin de journée et la réponse suivra.
Bonjour fagots,
Question intermédiaire : est-ce que les valeurs de la ligne 1 du fichier source sont identiques à la ligne 1 du fichier source ... ?
Note : pourquoi pas de titre de colonne en ligne 1 et le début des données en ligne 2 ?
Question intermédiaire : est-ce que les valeurs de la ligne 1 du fichier source sont identiques à la ligne 1 du fichier source ... ?
Note : pourquoi pas de titre de colonne en ligne 1 et le début des données en ligne 2 ?
Bonjour Le Pingou
Les valeurs du fichiers source sont à copier toujours en collage spécial valeur. Oui les valeurs sont les mêmes.
Dans mon fichier sources ,il existe bien des titres de colonne ainsi que dans le fichier cible.
Mais elles ne sont pas identique.
Fichier construit par entité national qui regroupe plusieurs site et plusieurs données qui ne me sont pas toutes nécessaire pour mon fichier cible.
En espérant avoir été clair.
Salutations
fagots
Les valeurs du fichiers source sont à copier toujours en collage spécial valeur. Oui les valeurs sont les mêmes.
Dans mon fichier sources ,il existe bien des titres de colonne ainsi que dans le fichier cible.
Mais elles ne sont pas identique.
Fichier construit par entité national qui regroupe plusieurs site et plusieurs données qui ne me sont pas toutes nécessaire pour mon fichier cible.
En espérant avoir été clair.
Salutations
fagots
Bonjour,
Merci c'est parfait.
Un dernier petit détail, il y-a-t-il des formules dans la ligne 1 du fichier source et si oui sur combien de colonnes?
Salutations.
Le Pingou
Merci c'est parfait.
Un dernier petit détail, il y-a-t-il des formules dans la ligne 1 du fichier source et si oui sur combien de colonnes?
Salutations.
Le Pingou
Bonjour,
Ma proposition, copie et colle le(s) valeur(s) vers le fichier cible.
Merci d'adapter les noms selon vos besoins.
La procédure :
Ma proposition, copie et colle le(s) valeur(s) vers le fichier cible.
Merci d'adapter les noms selon vos besoins.
La procédure :
Sub Importer_valeur_cellule() Dim objcible As Workbook, objsource As Workbook Dim c As interger, nbvaci As Integer, nbvaso As Integer Set objsource = Workbooks("Classeur11.xlsm") Set objcible = Workbooks("classeur12.xlsx") Application.ScreenUpdating = False ' contrôler si nouvelle valeur sur classeur source nbvaso = WorksheetFunction.CountA(objsource.Sheets("Feuil1").Rows(1)) nbvaci = WorksheetFunction.CountA(objcible.Sheets("Feuil1").Rows(1)) If nbvaci < nbvaso Then For c = 1 To (nbvaso - nbvaci) objsource.Sheets("Feuil1").Cells(1, nbvaci + c).Copy objcible.Sheets("Feuil1").Cells(1, nbvaci + c).PasteSpecial xlPasteValues Next c End If Set objcible = Nothing Set objsource = Nothing Application.ScreenUpdating = True End Sub
Bonjour,
J'ai bien fais la correction, mais la macro tourne et elle ne fonctionne pas car elle ne copie rien. Question pourquoi la source est-elle en xlsm?
Je sais que cela veut dire classeur prenant en charge les macro.Pour moi c'est mon fichier cible qui a en charge la macro.
J'ai des essai comme indiqué dans la procédure proposée et fait inversement des fichiers sources et cible.
Et toujours rien.
Cordialement
fagots
J'ai bien fais la correction, mais la macro tourne et elle ne fonctionne pas car elle ne copie rien. Question pourquoi la source est-elle en xlsm?
Je sais que cela veut dire classeur prenant en charge les macro.Pour moi c'est mon fichier cible qui a en charge la macro.
J'ai des essai comme indiqué dans la procédure proposée et fait inversement des fichiers sources et cible.
Et toujours rien.
Cordialement
fagots
Bonjour,
C'est étonnant, j'ai testé et cela fonctionne parfaitement.
Pouvez-vous me mettre une copie de la macro telle que vous l'utilisez... !
C'est étonnant, j'ai testé et cela fonctionne parfaitement.
Pouvez-vous me mettre une copie de la macro telle que vous l'utilisez... !
bonjour,
Voici la macro:
Sub Importer_valeur_cellule()
Dim objcible As Workbook, objsource As Workbook
Dim c As Integer, nbvaci As Integer, nbvaso As Integer
Set objsource = Workbooks("fichier2.xlsm")
Set objcible = Workbooks("fichier1.xlsx")
Application.ScreenUpdating = False
' contrôler si nouvelle valeur sur classeur source
nbvaso = WorksheetFunction.CountA(objsource.Sheets("Feuil2").Rows(1))
nbvaci = WorksheetFunction.CountA(objcible.Sheets("Feuil1").Rows(1))
If nbvaci < nbvaso Then
For c = 1 To (nbvaso - nbvaci)
objsource.Sheets("Feuil2").Cells(1, nbvaci + c).Copy
objcible.Sheets("feuil1 ").Cells(1, nbvaci + c).PasteSpecial xlPasteValues
Next c
End If
Set objcible = Nothing
Set objsource = Nothing
Application.ScreenUpdating = True
End Sub
Salutations
fagots
Voici la macro:
Sub Importer_valeur_cellule()
Dim objcible As Workbook, objsource As Workbook
Dim c As Integer, nbvaci As Integer, nbvaso As Integer
Set objsource = Workbooks("fichier2.xlsm")
Set objcible = Workbooks("fichier1.xlsx")
Application.ScreenUpdating = False
' contrôler si nouvelle valeur sur classeur source
nbvaso = WorksheetFunction.CountA(objsource.Sheets("Feuil2").Rows(1))
nbvaci = WorksheetFunction.CountA(objcible.Sheets("Feuil1").Rows(1))
If nbvaci < nbvaso Then
For c = 1 To (nbvaso - nbvaci)
objsource.Sheets("Feuil2").Cells(1, nbvaci + c).Copy
objcible.Sheets("feuil1 ").Cells(1, nbvaci + c).PasteSpecial xlPasteValues
Next c
End If
Set objcible = Nothing
Set objsource = Nothing
Application.ScreenUpdating = True
End Sub
Salutations
fagots
Bonjour,
De cette manière je pense que ce sera bon:
De cette manière je pense que ce sera bon:
Sub Importer_valeur_cellule() Dim objcible As Workbook, objsource As Workbook Dim shci As Object, shso As Object Dim c As Integer, nbvaci As Integer, nbvaso As Integer Set objsource = Workbooks("fichier1.xlsx") Set objcible = Workbooks("fichier2.xlsm") Set shso = objsource.Sheets("Feuil1") Set shci = objcible.Sheets("Feuil2") Application.ScreenUpdating = False ' contrôler si nouvelle valeur sur classeur source nbvaso = WorksheetFunction.CountA(shso.Rows(1)) nbvaci = WorksheetFunction.CountA(shci.Rows(1)) If nbvaci < nbvaso Then For c = 1 To (nbvaso - nbvaci) shso.Cells(1, nbvaci + c).Copy shsi.Cells(1, nbvaci + c).PasteSpecial xlPasteValues Next c End If Set objcible = Nothing: Set shci = Nothing Set objsource = Nothing: Set shso = Nothing Application.ScreenUpdating = True End Sub
l'argument
" nucol = objcible.Sheets(1).Cells(1,Rows(1).Cells.Count).End(xlUp).Column objsource.Sheets(1).Range("A1 ").copy Destination := objcible.Sheets(1).Cells(1,nucol)"
Ne fonctionne pas. Une fois coller la ligne est en rouge avec message erreur de compilation.
J'ai bien mis les noms des deux fichiers.
En tous cas merci de vous pencher sur ma question.
Salutation