Macro copier ds 1 cellule 2 données séparées
Résolu/Fermé
maguy
-
5 sept. 2010 à 12:06
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 15 sept. 2010 à 23:00
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 15 sept. 2010 à 23:00
A voir également:
- Macro copier ds 1 cellule 2 données séparées
- Copier une vidéo youtube - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Word numéro de page 1/2 - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
16 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
Modifié par Patrice33740 le 6/09/2010 à 00:51
Modifié par Patrice33740 le 6/09/2010 à 00:51
Bonsoir,
Essaie ce code :
Cordialement
Patrice
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
Essaie ce code :
Sub concatener() Dim rng As Range Dim cel As Range Dim copie As Range Set copie = Worksheets("copie").Range("A1") '1ère cellule destination Set rng = Worksheets("données").Range("A1") '1ère cellule prénoms With rng Set rng = .Resize(.End(xlDown).Row - .Row + 1) 'Liste des prénoms End With For Each cel In rng.Cells copie.Value = StrConv(cel.Value, vbProperCase) & " " & _ StrConv(cel.Offset(0, 1).Value, vbUpperCase) Set copie = copie.Offset(1) Next End Sub
Cordialement
Patrice
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
7 sept. 2010 à 14:37
7 sept. 2010 à 14:37
Bonjour,
Il y a une petite erreur dans ton adaptation du code ci-dessus mais je ne pense pas que ce soit la cause de l'erreur :
Remplacer :
par :
Je travaille avec excel 2003, ton problème vient peut-être de la saisie sous 2007, remplace ces deux lignes :
par celle-ci :
Tiens moi au courant
Il y a une petite erreur dans ton adaptation du code ci-dessus mais je ne pense pas que ce soit la cause de l'erreur :
Remplacer :
Set copie = Worksheets("appelundi8").Range("A6:A37") '1ère cellule destination Set rng = Worksheets("listeappel").Range("B4:B39") '1ère cellule noms
par :
Set copie = Worksheets("appelundi8").Range("A6") '1ère cellule destination Set rng = Worksheets("listeappel").Range("B4") '1ère cellule noms
Je travaille avec excel 2003, ton problème vient peut-être de la saisie sous 2007, remplace ces deux lignes :
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & _ StrConv(cel.Offset(0, 1).Value, vbProperCase)
par celle-ci :
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & StrConv(cel.Offset(0, 1).Value, vbProperCase)
Tiens moi au courant
Bien en fin de compte j'ai réussi à résoudre le problème. En fait je n'avais pas (oubli ou inattention de ma part) exécuter la macro. je l'avais choisi par association avec un bouton, mais je ne l'avais pas activer. Maintenant aucun problème.
Merci encore pour votre aide. C'est important pour moi, maintenant mon travail prend un sens plus pratique.
cordialement, Maguy
Merci encore pour votre aide. C'est important pour moi, maintenant mon travail prend un sens plus pratique.
cordialement, Maguy
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 5/09/2010 à 12:58
Modifié par michel_m le 5/09/2010 à 12:58
Bonjour,
les 2 classeurs doivent être ouverts
classeur source "classeur1.xls" feuille "feuil1") à adapter chez toi
macro dans classeur cible (feuille où on restitue active, cad sur l'écran)
:-x
les 2 classeurs doivent être ouverts
classeur source "classeur1.xls" feuille "feuil1") à adapter chez toi
macro dans classeur cible (feuille où on restitue active, cad sur l'écran)
Option Base 1 Sub concatener() Dim identite Dim cptr As Byte ReDim identite(38) With Workbooks("classeur1.xls").Sheets(1) For cptr = 1 To 38 identite(cptr) = .Cells(cptr, 1) & " " & .Cells(cptr, 2) Next End With With ActiveSheet Range("A6:A45") = identite End With End Sub --
:-x
Tout d'abord merci d'avoir répondu !
pourrais-je avoir quelques explications sur la macro de façon a pouvoir l'adpater ni nécessaire.
en attendant, j'essaye et je vous tiens au courant des résultats.
merci encore
maguy
pourrais-je avoir quelques explications sur la macro de façon a pouvoir l'adpater ni nécessaire.
en attendant, j'essaye et je vous tiens au courant des résultats.
merci encore
maguy
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re Bonjour
erreur de ma part : les deux feuilles appartiennent au même classeur.
pardon
Maguy
je joins un fichier pour exemple : http://www.cijoint.fr/cjlink.php?file=cj201009/cijYs1nw7P.xlsm
erreur de ma part : les deux feuilles appartiennent au même classeur.
pardon
Maguy
je joins un fichier pour exemple : http://www.cijoint.fr/cjlink.php?file=cj201009/cijYs1nw7P.xlsm
Bonjour,
j'ai donc changer le code avec les informations que j'ai mis + haut et ça ne fonctionne pas.
quelqu'un peut-il m'aider ? merci d'avance
code changer
Sub concatener()
Dim identite
Dim cptr As Byte
ReDim identite(38)
With ThisWorkbook.Sheets("données")
For cptr = 1 To 38
identite(cptr) = .Cells(cptr, 1) & " " & .Cells(cptr, 2)
Next
End With
With ActiveSheet
Range("A1:A45") = identite
End With
End Sub
j'ai donc changer le code avec les informations que j'ai mis + haut et ça ne fonctionne pas.
quelqu'un peut-il m'aider ? merci d'avance
code changer
Sub concatener()
Dim identite
Dim cptr As Byte
ReDim identite(38)
With ThisWorkbook.Sheets("données")
For cptr = 1 To 38
identite(cptr) = .Cells(cptr, 1) & " " & .Cells(cptr, 2)
Next
End With
With ActiveSheet
Range("A1:A45") = identite
End With
End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 5/09/2010 à 19:03
Modifié par michel_m le 5/09/2010 à 19:03
Je n'ai pas Excel 2007comme beaucoup de monde ici...donc la prochaine fois, sauvegarde au format excel 97-2003 , Tu auras + de chances d'avoir des réponses
avec la visionneuse microsoft, on voit qu'il y a pas que le nombre de classeurs qui change et dans la feuille "copie" les prénoms et noms ne concordent pas...
change les 3 dernières lignes
il faut mettre un point devant range quand tu utilises with - end with
c'est équivalent à
avec la visionneuse microsoft, on voit qu'il y a pas que le nombre de classeurs qui change et dans la feuille "copie" les prénoms et noms ne concordent pas...
change les 3 dernières lignes
With sheets("copie") .Range("A1:A45") = identite End With
il faut mettre un point devant range quand tu utilises with - end with
c'est équivalent à
sheets("copie").Range("A1:A45")=identite
Bonjour,
d'accord, je met le fichier en excel 97 2003 en espérant avoir d'autres idées
merci en tout cas
Maguy
http://www.cijoint.fr/cjlink.php?file=cj201009/cij5S40sNJ.xls
d'accord, je met le fichier en excel 97 2003 en espérant avoir d'autres idées
merci en tout cas
Maguy
http://www.cijoint.fr/cjlink.php?file=cj201009/cij5S40sNJ.xls
Bonjour,
si une macro n'est pas indispensable tu peux utiliser la fonction concatener
dans la feuille copie en A1 tu écris:
=CONCATENER(données!A1;" ";données!B1)
puis tu dupliques vers le bas
bon courage
si une macro n'est pas indispensable tu peux utiliser la fonction concatener
dans la feuille copie en A1 tu écris:
=CONCATENER(données!A1;" ";données!B1)
puis tu dupliques vers le bas
bon courage
Bonjour,
tout d'abord merci Patrice, le code fonctionne à merveille !
Sauf que (je me suis trompée), il faudrait que le nom soit en majuscules et le prénom avec la 1ère lettre en majuscule seulement.
Si j'essaie ce code en inversant, le copiage me met le prénom en majuscules.
pourriez-vous encore me donner un petit coup de main ?
avec tous mes remerciements
Maguy
tout d'abord merci Patrice, le code fonctionne à merveille !
Sauf que (je me suis trompée), il faudrait que le nom soit en majuscules et le prénom avec la 1ère lettre en majuscule seulement.
Si j'essaie ce code en inversant, le copiage me met le prénom en majuscules.
pourriez-vous encore me donner un petit coup de main ?
avec tous mes remerciements
Maguy
Bonjour et merci
le code fonctionne très bien sauf (et c'est de ma faute), il faudrait :
que le nom soit en majuscule et le prénom avec la 1ère lettre en majuscule.
du style : RATEAU Pierre
en essayant avec votre code, c'est le prénom qui est en majuscules.
Merci de votre aide encore une fois
Maguy
le code fonctionne très bien sauf (et c'est de ma faute), il faudrait :
que le nom soit en majuscule et le prénom avec la 1ère lettre en majuscule.
du style : RATEAU Pierre
en essayant avec votre code, c'est le prénom qui est en majuscules.
Merci de votre aide encore une fois
Maguy
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
7 sept. 2010 à 01:07
7 sept. 2010 à 01:07
Bonsoir,
Dans ton exemple du 5 sept à 19h19, la première colonne (A) contient le prénom et la seconde (B) contient le nom ce qui donne Marcel RATEAU !
Il semblerait que maintenant tu mettes le nom en colonne A et le prénom en colonne B, cela donnerait effectivement Rateau MARCEL !
Dans ce cas il suffit de remplacer :
Par
Sinon il suffit de remettre le prénom en premier et le nom en second !
Cordialement
Patrice
PS : Sois plus précise dans tes prochaines demandes, il a fallu deviner que tu voulais des majuscules !
Dans ton exemple du 5 sept à 19h19, la première colonne (A) contient le prénom et la seconde (B) contient le nom ce qui donne Marcel RATEAU !
Il semblerait que maintenant tu mettes le nom en colonne A et le prénom en colonne B, cela donnerait effectivement Rateau MARCEL !
Dans ce cas il suffit de remplacer :
copie.Value = StrConv(cel.Value, vbProperCase) & " " & _ StrConv(cel.Offset(0, 1).Value, vbUpperCase)
Par
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & _ StrConv(cel.Offset(0, 1).Value, vbProperCase)
Sinon il suffit de remettre le prénom en premier et le nom en second !
Cordialement
Patrice
PS : Sois plus précise dans tes prochaines demandes, il a fallu deviner que tu voulais des majuscules !
Re bonjour
j'ai de nouveau un petit problème avec le code
un message me dit " erreur de compilation projet ou bibliothèque introuvable"
cela "coince" ou c'est en gras!
Dim rng As Range
Dim cel As Range
Dim copie As Range
Set copie = Worksheets("appelundi8").Range("A6:A37") '1ère cellule destination
Set rng = Worksheets("listeappel").Range("B4:B39") '1ère cellule noms
With rng
Set rng = .Resize(.End(xlDown).Row - .Row + 1) 'Liste des prénoms
End With
For Each cel In rng.Cells
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & _
StrConv(cel.Offset(0, 1).Value, vbProperCase)
Set copie = copie.Offset(1)
Next
Patrice, pouvez -vous m'aider encore !
si vous avez besoin d'autres renseignements dites-le moi
merci d'avance
Maguy
j'ai de nouveau un petit problème avec le code
un message me dit " erreur de compilation projet ou bibliothèque introuvable"
cela "coince" ou c'est en gras!
Dim rng As Range
Dim cel As Range
Dim copie As Range
Set copie = Worksheets("appelundi8").Range("A6:A37") '1ère cellule destination
Set rng = Worksheets("listeappel").Range("B4:B39") '1ère cellule noms
With rng
Set rng = .Resize(.End(xlDown).Row - .Row + 1) 'Liste des prénoms
End With
For Each cel In rng.Cells
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & _
StrConv(cel.Offset(0, 1).Value, vbProperCase)
Set copie = copie.Offset(1)
Next
Patrice, pouvez -vous m'aider encore !
si vous avez besoin d'autres renseignements dites-le moi
merci d'avance
Maguy
Bonjour,
j'ai encore un petit souci ...........de taille !
en effet en rentrant le code que Patrice m'a proposer, et qui fonctionne parfaitement, j'ai constater que mon fichier avait grossi dans des proportions "hallucinantes".
je suis passée de quelques centaines d'octets à plus de 5Mo.
n'y aurait-il pas un code moins gourmand en ressources ?
ou bien est-ce tout à fait normal ?
merci de me renseigner
Maguy
j'ai encore un petit souci ...........de taille !
en effet en rentrant le code que Patrice m'a proposer, et qui fonctionne parfaitement, j'ai constater que mon fichier avait grossi dans des proportions "hallucinantes".
je suis passée de quelques centaines d'octets à plus de 5Mo.
n'y aurait-il pas un code moins gourmand en ressources ?
ou bien est-ce tout à fait normal ?
merci de me renseigner
Maguy
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
9 sept. 2010 à 09:44
9 sept. 2010 à 09:44
Bonjour Maguy,
Cela ne vient pas du code, je viens de vérifier, ce code occupe à peine plus de 3 ko supplémentaires
Je te propose de repartir sur un fichier propre :
- ouvre un nouveau fichier
- copie les informations et formules de ton fichier (seulement la zone utilisée) sur la nouvelle feuille.
- copie aussi le code
- enregistre ce fichier
Sinon peux-tu mettre une copie sur http://cijoint.fr/
Cordialement
Patrice
Cela ne vient pas du code, je viens de vérifier, ce code occupe à peine plus de 3 ko supplémentaires
Je te propose de repartir sur un fichier propre :
- ouvre un nouveau fichier
- copie les informations et formules de ton fichier (seulement la zone utilisée) sur la nouvelle feuille.
- copie aussi le code
- enregistre ce fichier
Sinon peux-tu mettre une copie sur http://cijoint.fr/
Cordialement
Patrice
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
9 sept. 2010 à 10:57
9 sept. 2010 à 10:57
Re
En tous cas cela ne vient pas du code.
Peut-être as tu étendu des formules sur la totalité d'une colonne au lieu de limiter au strict nécessaire, ou alors tu as inséré des images, ...
Pour le confirmer, il te suffit de sauvegarder le code dans un fichier .txt (bloc note), de l'effacer du fichier Excel et d'enregistrer pour voir la taille sans le code.
patrice
En tous cas cela ne vient pas du code.
Peut-être as tu étendu des formules sur la totalité d'une colonne au lieu de limiter au strict nécessaire, ou alors tu as inséré des images, ...
Pour le confirmer, il te suffit de sauvegarder le code dans un fichier .txt (bloc note), de l'effacer du fichier Excel et d'enregistrer pour voir la taille sans le code.
patrice
Bonjour,......encore moi
l'idée que le code s'applique à toute la colonne de copiage est une idée qui pourrait être la bonne.
mais si je change les cellules, j'obtiens qqchose de très bizarre
Dim rng As Range
Dim cel As Range
Dim copie As Range
Set copie = Worksheets("appelundi8").Range("A6:A40") '1ère cellule destination
Set rng = Worksheets("listeappel").Range("B4:B38") '1ère cellule noms
With rng
Set rng = .Resize(.End(xlDown).Row - .Row + 1) 'Liste des prénoms
End With
For Each cel In rng.Cells
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & StrConv(cel.Offset(0, 1).Value, vbProperCase)
Set copie = copie.Offset(1)
Next
pour la 1ère liste, qd je rentre cela, les 2 premiers noms rentrent bien mais le 3e est répéter jusqu'à la ligne A40. Or si il n'y a pas de noms il ne devrait rien y avoir.
Qu'ai-je encore oublié de vous donner comme infos ; cela vient peut-être de là. j'ai peut-être oublié de vous le préciser ??????,
Maguy
l'idée que le code s'applique à toute la colonne de copiage est une idée qui pourrait être la bonne.
mais si je change les cellules, j'obtiens qqchose de très bizarre
Dim rng As Range
Dim cel As Range
Dim copie As Range
Set copie = Worksheets("appelundi8").Range("A6:A40") '1ère cellule destination
Set rng = Worksheets("listeappel").Range("B4:B38") '1ère cellule noms
With rng
Set rng = .Resize(.End(xlDown).Row - .Row + 1) 'Liste des prénoms
End With
For Each cel In rng.Cells
copie.Value = StrConv(cel.Value, vbUpperCase) & " " & StrConv(cel.Offset(0, 1).Value, vbProperCase)
Set copie = copie.Offset(1)
Next
pour la 1ère liste, qd je rentre cela, les 2 premiers noms rentrent bien mais le 3e est répéter jusqu'à la ligne A40. Or si il n'y a pas de noms il ne devrait rien y avoir.
Qu'ai-je encore oublié de vous donner comme infos ; cela vient peut-être de là. j'ai peut-être oublié de vous le préciser ??????,
Maguy
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
9 sept. 2010 à 19:23
9 sept. 2010 à 19:23
Re,
Je pense que tu as mal compris, dans mon poste du 7 sep 2010 à 14:37
je t'ai dis que copie et rng doivent être des cellules uniques (pas A6:A40 mais A6, pas B4:B38 mais B4)
Quand je parle d'« étendre des formules sur la totalité d'une colonne au lieu de limiter au strict nécessaire » c'est sur la feuille de calcul, pas dans la macro !
Comme je te l'ai dis précédemment : cela ne vient pas du code (de la macro)
Cordialement
Je pense que tu as mal compris, dans mon poste du 7 sep 2010 à 14:37
je t'ai dis que copie et rng doivent être des cellules uniques (pas A6:A40 mais A6, pas B4:B38 mais B4)
Quand je parle d'« étendre des formules sur la totalité d'une colonne au lieu de limiter au strict nécessaire » c'est sur la feuille de calcul, pas dans la macro !
Comme je te l'ai dis précédemment : cela ne vient pas du code (de la macro)
Cordialement
Bonjour Patrice, j'avais compris ce que vous m'avez dit, mais comme ce n'est pas une formule excel que l'on peut copier sur des cellules choisie, je ne comprend pas comment "étendre des formules sur la totalité d'une colonne au lieu de limiter au strict nécessaire ». C'est dans la macro que l'on détermine les cellules concernées ? je suis surement incompétente, mais je ne comprend pas du tout ce que vous voulez dire !
Expliquez moi sur mon exemple donné à quoi vous faites allusion.
Pardon et merci encore
http://www.cijoint.fr/cjlink.php?file=cj201009/cijVg3XmGt.xls
Expliquez moi sur mon exemple donné à quoi vous faites allusion.
Pardon et merci encore
http://www.cijoint.fr/cjlink.php?file=cj201009/cijVg3XmGt.xls
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
11 sept. 2010 à 00:27
11 sept. 2010 à 00:27
Bonsoir maguy,
J'essayais de répondre à «je suis passée de quelques centaines d'octets à plus de 5Mo.»
Le fichier que tu mets en exemple ne reflète en rien le problème, il fait à peine 43 ko (macro comprise).
J'ai donc mis 2500 noms et les prénoms correspondants (les personnes ont en général 2 à 3 prénoms) sur la feuille «données».
J'ai effacé les données de la feuille «copie» et j'ai enregistré le fichier : il fait 219 ko
Après avoir exécuté la macro et enregistré le fichier : la taille passe à 318 ko
Cela me semble cohérent puisque cette macro dédouble les informations de la feuille «données» vers la feuille «copie».
Je ne comprends pas pourquoi ton fichier passe de quelques dix millièmes de Mo à 5 Mo. Sa taille serait multipliée par 50 000 !!!.
Il est possible que lors des essais de mise au point de la macro tu aies multiplié la taille du fichier en copiant des données un peu partout.
Fait comme moi : repart à zéro à partir de ton fichier exemple.
Cordialement
Patrice
J'essayais de répondre à «je suis passée de quelques centaines d'octets à plus de 5Mo.»
Le fichier que tu mets en exemple ne reflète en rien le problème, il fait à peine 43 ko (macro comprise).
J'ai donc mis 2500 noms et les prénoms correspondants (les personnes ont en général 2 à 3 prénoms) sur la feuille «données».
J'ai effacé les données de la feuille «copie» et j'ai enregistré le fichier : il fait 219 ko
Après avoir exécuté la macro et enregistré le fichier : la taille passe à 318 ko
Cela me semble cohérent puisque cette macro dédouble les informations de la feuille «données» vers la feuille «copie».
Je ne comprends pas pourquoi ton fichier passe de quelques dix millièmes de Mo à 5 Mo. Sa taille serait multipliée par 50 000 !!!.
Il est possible que lors des essais de mise au point de la macro tu aies multiplié la taille du fichier en copiant des données un peu partout.
Fait comme moi : repart à zéro à partir de ton fichier exemple.
Cordialement
Patrice
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
15 sept. 2010 à 23:00
15 sept. 2010 à 23:00
De rien, avec plaisir