Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Réalisation d'une macro

  • Initiateur de la discussion Initiateur de la discussion liloo972
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

liloo972

Guest
Bonsoir,

Je suis toute nouvelle sur ce forum. Et je m'excuse d'avance si ce post n'est pas là où il doit être...
Je me permet de vous adresser ce message parce que je travaille depuis ce matin, sur une macro, je n'en ai jamais fais c'est ma première que je réalise grâce à l'aide de tuto etc... seulement voila... après avoir suivi toute les étapes... celle ci ne fonctionne pas... je souhaite transférer des données qui sont inscrite sur la 1ere feuille d'un classeur, sur une 3ème... qui sera ma base de données.

Je pense avoir suivi toutes les étapes mais je me retrouve un un code erreur 400...

Que dois-je faire... ?
Je dois rendre ce travail pour lundi et je suis en panique... Je join le fichier....

Quelqu'un peut m'aider ?
 

Pièces jointes

Dernière modification par un modérateur:
Re : Réalisation d'une macro

Bonsoir
Moi j'ai une erreur 1004, d'abord. Il ne peut pas lire la propriété Select de Range("A8") parce que c'est en réalité une méthode qui ne renvoie pas de valeur.
Une autre erreur 1004 survient après correction de cette affectation en un simple instruction, du fait que dans le module de feuille ou est écrit la procédure, la méthode Range utilisée sans spécification de feuille devant prend la feuille à laquelle est attachée le module.
Or ce n'est plus la feuille active.
Vous devriez supprimer les Select. Ça ne sert à rien. Il vaut mieux, si on tient à décomposer, affecter à des variables déclarées As Range.
À +
 
Dernière édition:
Re : Réalisation d'une macro

Bonsoir à tous

lillo972
Il semblerait que ton fichier contienne des données confidentielles, non ? (téléphone, immatriculation)
Remplaces ces données par des données fictives et remplace ton fichier précédent (dans ton premier message) par ce nouveau fichier que tu viendras d’anonymiser 😉
 
Re : Réalisation d'une macro

Non pas vraiment j'avais déjà modifier les données. Mais merci quand même pour l'info 😀 Ca m'embête j'ai l'impression que je suis pas loin et ça ne marche pas... je suis à deux doigt de tout laisser tomber... ça ne doit pas être grand chose mais vu que c'est ma 1ère...
 
Re : Réalisation d'une macro

Merci beaucoup ! Vraiment! j'espere que cela marchera ! Je continue de chercher de mon côté mais vu mon niveau (inexistant ds les macros...je crains que mes recherche me mèneront nul part.) Encore merci.
 
Re : Réalisation d'une macro

Re

Est-il possible de modifier l'ordre des colonnes sur la feuille 3?
Car on s'aperçoit que l'ordre n'est pas le même entre la feuille Formulaire et la feuille Base de Données
(et certains champs n'existent pas dans le feuille base de données)

Lances cette macro pour voir de quoi je parle
Code:
Sub TestEmilie()
Dim cellules, colonnes, i
cellules = Array("C11", "C12", "C13", "C14", "C15", "C16", "C17", "C18", "C19", "C20", "C21") 
colonnes = Array("A", "B", "G", "C", "D", "E", "H", "I", "J", "K", "F") 
For i = 0 To UBound(cellules)
MsgBox Range(cellules(i)).Offset(, -1) & " " & Sheets("Base de donnée Client").Cells(7, CStr(colonnes(i)))
Next i
End Sub
 
Re : Réalisation d'une macro

Bonsoir ,

en vous remerciant de votre réponse, j'ai effectué votre démarche mais il ne se passe rien, en fait pour chaque champs cela ouvre une boite de dialogue... ms les champs de la BBD restent vide...

Cordialement,
 
Re : Réalisation d'une macro

Désolée, je l'ai précisé je suis ultra novice, je n'y comprend pas grand chose, ce qui vous semble logique ne l'est pas du tout pour moi... j'ai beau relire votre réponse je ne comprend pas...

Cordialement.
 
Re : Réalisation d'une macro

Re


Voici une version plus parlante j'espère
Code:
Sub TestEmilieII()
Dim lc, nc, i, m$
lc = Array(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 30, 31, 32, 33, 34, 36)
nc = Array("A", "B", "G", "C", "D", "E", "H", "I", "J", "K", "F", "L", "M", "N", "P", "Q", "R", "S")
For i = 0 To UBound(lc)
m = m & Cells(lc(i), "C").Offset(, -1) & vbTab & vbTab & vbTab & Sheets("Base de donnée Client").Cells(7, CStr(nc(i))) & Chr(13)
Next i
MsgBox m
End Sub

Ce que je veux c'est l'ordre des champs (le nom des cellules) sur la ligne 7 de la feuille Base de données
n'est pas tout à fait dans le même ordre que sur le Formulaire
Exemple (Il y a un décalage)
[TABLE="class: grid, width: 200"]
[TR]
[TD]Formulaire
[/TD]
[TD]BD
[/TD]
[/TR]
[TR]
[TD]Nom
[/TD]
[TD]Nom
[/TD]
[/TR]
[TR]
[TD]Prenom
[/TD]
[TD]Prenom[/TD]
[/TR]
[TR]
[TD]Date de Naissance
[/TD]
[TD]Adresse
[/TD]
[/TR]
[TR]
[TD]Adresse[/TD]
[TD]Code Postal[/TD]
[/TR]
[/TABLE]
Donc si l'ordre était le même sur les deux feuiiles, la recopie s'en trouverait grandement facilité.
 
Re : Réalisation d'une macro

Re

Comme tu débutes, j'espère que cet exemple te sera utile
1) Dans un nouveau classeur, copie ces macros (ALT+F11 puis copier dans un module)
2) Exécutes une seule fois la macro : creeEXEMPLE
3) Lances maintenant la macro : MACRORECOPIE
4) Saisie manuellement des valeurs dans les cellules B1 à B10 de la feuille 1, et relance la macro
MACRORECOPIE
La copie se fait à la suite des précédentes données sur la feuille BD.
VB:
Sub creeEXEMPLE()
'A NE LANCER QU'UNE SEULE FOIS
Range("A1") = "CHAMPS"
Range("B1") = "SAISIE UTILISATEUR"
Range("A2") = "CHAMPS1"
Range("B2") = "DONNEE1"
Range("A2:B2").AutoFill Destination:=Range("A2:B11"), Type:=xlFillDefault
Range("A2:A11").Copy
Sheets("Feuil2").Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
VB:
Sub MACRORECOPIE()
Dim DERLIGNE As Long
'ici on copie des données de la feuille 1
Sheets("Feuil1").Range("B2:B11").Copy
'ici on indentifie la 1er cellule vide en colonne A de la feuille 2 (la feuille BD)
DERLIGNE = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1
'et pour finir on recopie les données de la feuille 1 vers la feuille 2 (en transposant)
Sheets("Feuil2").Cells(DERLIGNE, "A").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub

Tu vois désormais pourquoi il peut être utile que l'ordre des données soit le même sur les deux feuilles ?
 
Re : Réalisation d'une macro

J'ai finalement trouvé une solution ... c'est du bricolage mais elle marche !!! (je suis fière de moi, novice, une fille, et blonde en plus 😛 ! en tout cas merci à tous pour votre aide je garde tout de même vos solutions pour une utilisation plus professionnelle et moins bidouillée que la mienne qui me seront utile ultérieurement là j'ai encore du mal avec les techniques présentées je pense que je vais d'abord reprendre les bases de cette chose pour mieux comprendre à l'avenir... Merci beaucoup !

Cordialement.
 
Re : Réalisation d'une macro

Bonsour®
Re
Voici une version plus parlante j'espère

😉 il manquait l'instruction correspondante ...

Code:
Sub TestEmilieII()
Dim lc, nc, i, m$
lc = Array(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 30, 31, 32, 33, 34, 36)
nc = Array("A", "B", "G", "C", "D", "E", "H", "I", "J", "K", "F", "L", "M", "N", "P", "Q", "R", "S")
For i = 0 To UBound(lc)
m = m & Cells(lc(i), "C").Offset(, -1) & vbTab & vbTab & vbTab & Sheets("Base de donnée Client").Cells(7, CStr(nc(i))) & Chr(13)
application.speech.speak Sheets("Base de donnée Client").Cells(7, CStr(nc(i)))
Next i
MsgBox m
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
339
wDog66
W
Réponses
5
Affichages
443
Réponses
7
Affichages
552
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…