Transfert de données

Bonjour à tous.

En premier lieu merci de tout le soutient que vous apportez lors de vos participations et qui m'on été utiles a de nombreuses reprises.

De ce fait je me permets de revenir a nouveau vers vous afin de résoudre et de comprendre comment réaliser ce qui est décrit ci dessous.

- En premier lieu je souhaiterais que le contenu des cellules Feuille "Formulaire" C7, I7,O7. soient retranscrites dans la Feuille "Nomenclature" en A1, B1, C1 à l'aide du bouton (COURRIER DE DÉCISION) se trouvant en bas de la feuille "Formulaire".

- Une fois ceci fait les les valeurs des cellules de la Feuille "Formulaire" sont éffacées" (C7, I7, O7).

- A chaque nouvelle retranscription par le biais du bouton (COURRIER DE DÉCISION), ces données sont retranscrites à la ligne suivante dans la feuille "Nomenclature".

Une petite description du fonctionnement dans le code VBA afin d'en comprendre le fonctionnement serait la cerise sur le gâteau.

Vous remerciant d'ores et déjà de toute l'aide que vous pourrez m'apporter, je vous souhaite une excellente journée.

10essai.xlsm (52.39 Ko)

Bonjour,

J'ai fait, pas à pas, exactement ce que tu demandes
1) copier les cellules C7, I7, O7 de "Formulaire"
2) les transcrire en A1, B1, C1 de "Nomenclature"
3) les effacer dans "Formulaire"

tu trouveras le code de cette procédure dans la macro "transcrire" que je n'ai pas adaptée au bouton "COURRIER DE DECISION"

Attention : cette écriture est loin d'être idéale dans sa forme, mais d'une part ça marche et d'autre part j'ai procédé comme cela car tu demandes

Une petite description du fonctionnement dans le code VBA afin d'en comprendre le fonctionnement serait la cerise sur le gâteau.

Evidemment si ça te convient il serait utiile de "soulager" ce code

Au plaisir

25essai-8.xlsm (48.14 Ko)

Bonjour

@Jacky : Vous pouvez simplifier le code comme ceci

Sub transcrire()
Dim feuille1 As Worksheet, feuille2 As Worksheet

Set feuille1 = Worksheets("Formulaire")
Set feuille2 = Worksheets("Nomenclature")

With feuille2
    .Range("A1") = feuille1.Range("C7")
    .Range("B1") = feuille1.Range("G7")
    .Range("C1") = feuille1.Range("O7")
End With
feuille1.Range("C7,O7") = vbNullString 'vider les cellules
End Sub

Nul besoin de mettre des variables texte1,.....
Attention aussi que I7 est fusionnée avec G7, donc il faut prendre G7 en lieu et place (toujours éviter les fusions avec VBA, on le répète toujours)

Cordialement

Bonjour Jacky,

En premier lieu, un grand merci de ta prompte réponse.

Je viens d'ouvrir le fichier que tu m'as fait parvenir et me trouve face à un probleme d'erreur systèmede ce fait ce dernier ne fonctionne pas.

Ce problème est-il dû au fichier en lui même ou au contraire est-il généré par mon PC

image

Bonjour Tiago

Et si vous reprenez votre fichier posté dans votre demande et puis que vous l'ouvrez ...vous avez l'erreur ?

Edit : Vérifiez aussi si vous n'avez pas coché l'outil "Euro currency tools" ou "Outils pour l'euro" dans le menu Developpeur --> Compléments excel. Si oui décochez l'option.

Bonjour Dan,

Evidemment que je peux simplifier mon code, mais comme je l'ai indiqué dans mon post, je l'ai décomposé de façon très simpliste et lourde du fait que le demandeur avait écrit

Une petite description du fonctionnement dans le code VBA afin d'en comprendre le fonctionnement serait la cerise sur le gâteau.

De plus j'ai bien précisé que

Evidemment si ça te convient il serait utiile de "soulager" ce code

Enfin

Attention aussi que I7 est fusionnée avec G7

Je ne l'avais pas vu, donc je partage totalement ta remarque

Dan, je te souhaite une bonne journée et au plaisir de te croiser sur le Forum

Bonjour Dan, Bonjour Jacky,

En tout premier lieu je m'excuse de ma réponse tardive due à une abscence prolongée.

En ce qui concerne la résolution de mon problème, j'ai fait les vérifications sugerées par Dan et de ce cote tout est ok!

image

En y ajoutant le module1 dans le développeur (Simplifié selon Dan) je n'ai plus d'érreur système dans mon fichier.

Neanmois après divers essais, la rétranscription des données des cellules C7, G7 et O7 (Feuille5 Formulaire) ne se produit pas dans les cellules A11,B11,et C11 de la Feuille1 Nomenclature.

Je vous joints le fichier avec les modifications effectuées car n'arrive toujours pas à comprendre d'ou vient le problème.

Vous remerciant d'ôres et déjà du temps que vous y accorderez, je vous souhaite une excellente journée.

11essai.xlsm (48.23 Ko)

Bonjour

Neanmois après divers essais, la rétranscription des données des cellules C7, G7 et O7 (Feuille5 Formulaire) ne se produit pas dans les cellules A11,B11,et C11 de la Feuille1 Nomenclature.

Oui logique, dans les déclarations Set Feuille, vous avez inversé feuille1 et feuille5. Changez simplement à cet endroit

Autre chose, au début du code vous avez déclaré deux fois Dim feuille1... à corriger aussi sans quoi le code va buguer

Cordialement

Bonjour Dan,

Je viens d'effectuer les modifications sugeréées, et cela ne fonctionne toujours pas.

Est-ce que mes modifications sont pertinantes ou me suis embrouillé avec ces dernières?

Auriez-vous l'amabilité de vérifier?

Très bonne journée.

8essai.xlsm (48.25 Ko)

Vous ne lisez pas bien ce que je vous écrit.

dans les déclarations Set Feuille, vous avez inversé feuille1 et feuille5. Changez simplement à cet endroit

Ne me repostez pas votre fichier si encore souci, mais votre code

D'ailleurs je vous avais donné tout ici https://forum.excel-pratique.com/s/goto/1244895.

Je ne vois pas pourquoi vous changez feuille2 en feuille5. Mais bon le choix de ces deux noms n'est pas un souci dans votre code


Edit :
Ah ok. Feuille2 et Feuille5, je pense avoir compris. Vous avez utilisé feuille2 et feuille5 par rapport au Codename des feuilles Nomenclature et Formulaire que vous avez vu dans l'éditeur VBA.
Dans ce cas et si vous voulez il y a plus simple à faire. Votre code comme ceci :

Sub transcrire()
With Feuil5
    .Range("A11") = Feuil1.Range("C7")
    .Range("B11") = Feuil1.Range("G7")
    .Range("C11") = Feuil1.Range("O7")
End With
Feuil5.Range("C7,G7,O7") = vbNullString 'vider les cellules
End Sub

J'ai modifié la feuille 2 en feuille 5 en partant du principe suivant:Feuil1 = Nomenclature / Feuil2 = Lexique / Feuil5 = Formulaire

Voici le code actuel....

Sub transcrire()

Dim feuille1 As Worksheet, feuille5 As Worksheet

Set feuille1 = Worksheets("Nomenclature")

Set feuille5 = Worksheets("Formulaire")

With feuille1

.Range("A11") = feuille5.Range("C7")

.Range("B11") = feuille5.Range("G7")

.Range("C11") = feuille5.Range("O7")

End With

feuille5.Range("C7,G7,O7") = vbNullString 'vider les cellules

End Sub

Bonjour Dan,

Je vous remercie pour toute votre aide mais malgré le code ci dessous la rétranscription ne s'effectue toujours pas.

Sub transcrire()
With Feuil5
.Range("A11") = Feuil1.Range("C7")
.Range("B11") = Feuil1.Range("G7")
.Range("C11") = Feuil1.Range("O7")
End With
Feuil5.Range("C7,G7,O7") = vbNullString 'vider les cellules
End Sub

De ce fait, je ne vais pas vous prendre encore plus de temps que vous ne m'en avez déjà accordé et vais revoir mon projet de manière differente.

Je vous remercie encore de toute votre aide et vous souhaite d'ores et déjà un excellent week-end.

Bonjour Dan,

Désolé pour le temps perdu....

Je viens de trouver la solution qui est d'une bêtise incommensurable, en effet votre code fonctionne à merveille.

Le problème, venait tout simplement du fait que je n'avais pas attribué la bonne macro à mon bouton ☹️☹️☹️

Désolé encore pour cette perte de temps et vous reitère tous mes remerciments.

Très bonne journée et un excellent week-end

re

Le problème, venait tout simplement du fait que je n'avais pas attribué la bonne macro à mon bouton

Lol ! ah oui je n'y avais pas pensé et ce, d'autant que je n'ai pas vu de bouton sur votre feuille

Pensez cloturer le fil si tout est ok maintenant

Bon WE

Crdlt

Rechercher des sujets similaires à "transfert donnees"