Macro VBA : mettre à jour une base d'après une liste
bibi_fricotin
Messages postés
197
Date d'inscription
Statut
Membre
Dernière intervention
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Peut-on m'aider SVP :
Une base de données doit être mise à jour d'après un référentiel.
Il faudrait une macro du genre :
* activer classeur1
* sélectionner cellule
* boucle : tant que la cellule n'est pas vide
* nommer la cellule "nom1"
* activer classeur2
*sélectionner colonne1
* rechercher "nom1"
* copier
*activer classeur1
*selectionner colonne +1
*coller
*selectionner colonne -1 ligne +1
*fin de la boucle
Merci.
Peut-on m'aider SVP :
Une base de données doit être mise à jour d'après un référentiel.
Il faudrait une macro du genre :
* activer classeur1
* sélectionner cellule
* boucle : tant que la cellule n'est pas vide
* nommer la cellule "nom1"
* activer classeur2
*sélectionner colonne1
* rechercher "nom1"
* copier
*activer classeur1
*selectionner colonne +1
*coller
*selectionner colonne -1 ligne +1
*fin de la boucle
Merci.
A voir également:
- Macro VBA : mettre à jour une base d'après une liste
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Excel compter cellule couleur sans vba - Guide
7 réponses
Bonjour,
Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, se serait plus facile de t'aider.
Pour communiquer tes classeurs tu les télécharges sur https://www.cjoint.com/ et tu mets ici les liens obtenus.
Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, se serait plus facile de t'aider.
Pour communiquer tes classeurs tu les télécharges sur https://www.cjoint.com/ et tu mets ici les liens obtenus.
Merci pour ta réponse.
Voici les liens (j'ai recréé des fichiers du même genre) :
pour le réferentiel (classeur2 dans l'exemple) : https://www.cjoint.com/?CJfbi2lhMyC
pour le fichier à mettre à jour (classeur1 dans l'exemple) : https://www.cjoint.com/?CJfbnDUR6eM
Les données des colonnes 3 et 4 du classeur2 (referentiel.xls) sont à mettre dans les colonnes 3 et 4 du classeur2 (MAJ.xls)
Merci.
Voici les liens (j'ai recréé des fichiers du même genre) :
pour le réferentiel (classeur2 dans l'exemple) : https://www.cjoint.com/?CJfbi2lhMyC
pour le fichier à mettre à jour (classeur1 dans l'exemple) : https://www.cjoint.com/?CJfbnDUR6eM
Les données des colonnes 3 et 4 du classeur2 (referentiel.xls) sont à mettre dans les colonnes 3 et 4 du classeur2 (MAJ.xls)
Merci.
Bonjour,
Je ne suis pas sûr qu'il te faille une macro pour cela.
En C2 tu mets la formule matricielle suivante :
Il faut valider avec ctrl+maj+entrée simultanés pour avoir le bon résultat.
Tu tires la formule sur D2 et tu double cliques sur la petite croix en bas à droite.
Tu as ainsi toutes tes valeurs. Si tu tiens vraiment à une macro c'est possible mais pas nécessaire.
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Je ne suis pas sûr qu'il te faille une macro pour cela.
En C2 tu mets la formule matricielle suivante :
=INDEX([referentiel.xls]Feuil1!$C1:$D65000;EQUIV(1;([referentiel.xls]Feuil1!$A1:$A65000=$A2)*([referentiel.xls]Feuil1!$B1:$B65000=$B2);0);COLONNE()-2)
Il faut valider avec ctrl+maj+entrée simultanés pour avoir le bon résultat.
Tu tires la formule sur D2 et tu double cliques sur la petite croix en bas à droite.
Tu as ainsi toutes tes valeurs. Si tu tiens vraiment à une macro c'est possible mais pas nécessaire.
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Merci pour ta réponse.
Très bonne idée et plus simple.
Néanmoins, pourrais-tu me donner la solution pour la boucle qui pourra me servir d'autres problèmes ?
Très bonne idée et plus simple.
Néanmoins, pourrais-tu me donner la solution pour la boucle qui pourra me servir d'autres problèmes ?
pourrais-tu me donner la solution pour la boucle
Je t'avais demandé la structure de tes classeurs parce qu'il n'y a pas de macro passe partout. Un tableur présente de nombreuses fonctions qui permettent de résoudre beaucoup de cas. les macros sont là pour fournir des fonctions spécifiques adaptées à des cas particuliers.
Les macros soit-disant généralistes qui pullulent sur le net ne résolvent généralement pas la fonction espérée et il faut adapter. Je t'ai fait ta fonction avec plusieurs façons de faire les boucles :
https://www.cjoint.com/?CJfwpwKTNza
Si tu as des questions sur le code n'hésites pas.
Je t'avais demandé la structure de tes classeurs parce qu'il n'y a pas de macro passe partout. Un tableur présente de nombreuses fonctions qui permettent de résoudre beaucoup de cas. les macros sont là pour fournir des fonctions spécifiques adaptées à des cas particuliers.
Les macros soit-disant généralistes qui pullulent sur le net ne résolvent généralement pas la fonction espérée et il faut adapter. Je t'ai fait ta fonction avec plusieurs façons de faire les boucles :
https://www.cjoint.com/?CJfwpwKTNza
Si tu as des questions sur le code n'hésites pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Sur la formule avec INDEX, j'ai plutôt saisi la formule matricielle
"=INDEX('[referentiel.xls]Feuil1'!$C$2:$D$82;;COLONNE()-2)"
mais quand je la recopie, les données ne changent pas, ce sont toujours les mêmes, pourtant les codes changent : aurais-tu une explication ?
Merci.
Sur la formule avec INDEX, j'ai plutôt saisi la formule matricielle
"=INDEX('[referentiel.xls]Feuil1'!$C$2:$D$82;;COLONNE()-2)"
mais quand je la recopie, les données ne changent pas, ce sont toujours les mêmes, pourtant les codes changent : aurais-tu une explication ?
Merci.
Bonjour,
"=INDEX('[referentiel.xls]Feuil1'!$C$2:$D$82;;COLONNE()-2)"
et ce qui est souligné dans ma formule, ce n'est pas pour la beauté ;-)
pourtant les codes changent mais tu n'en tiens pas compte !
"=INDEX('[referentiel.xls]Feuil1'!$C$2:$D$82;;COLONNE()-2)"
et ce qui est souligné dans ma formule, ce n'est pas pour la beauté ;-)
=INDEX([referentiel.xls]Feuil1!$C1:$D65000;EQUIV(1;([referentiel.xls]Feuil1!$A1:$A65000=$A2)*([referentiel.xls]Feuil1!$B1:$B65000=$B2);0);COLONNE()-2)
pourtant les codes changent mais tu n'en tiens pas compte !