Bonjours je cherche une macro pour copier et coller des données

Résolu/Fermé
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014 - Modifié par belfort-1 le 27/04/2014 à 03:13
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014 - 2 mai 2014 à 15:02
Bonjour
Je débute en VBA et ma question est la suivante

J'ai fais un tableau sur excel 2010 qui fait des classements.
celui-ci fonctionne tres bien mais j'aimerais ajouter une macro commande bouton pour copier des données du style AS integer dans cologne champ("b16:b316).
puis les collées dans cologne champ(v16:ad16) selon condition pour chaque cologne et toujours sur la meme ligne de la cologne corespondante.

une macro qui fera référence a ces conditions
a chaque fois qu il y aura une action la copie se fera toujours dans le meme champ(" b16:b316") collées dans la cologne suivante. en tout il y a 4 colognes a remplir.


Colgne ou collée les données selon condition

cologne 1 est la cologne champ(V)
cologne 2 est la cologne champ(X)
cologne 3 est la cologne champ(Z)
cologne 4 est la cologne champ(AB)

Exemple:

si(et(b16<>"";v16="");b16 ' coller la valeur de b16 dans v16
si(et(b16<>"";v16<>"";x16="");b16 ' coller la valeur de b16 dans x16
si(et(b16<>"";v16<>"";x16<>"";z16="");b16 ' coller la valeur de b16 dans Z16
si(et(b16<>"";v16<>"";x16<>"";z16<>"";ab16="");b16 ' coller la valeur de b16 dans v16

Pouvez vous m'aider . clik commande bouton vba.

nb. je veux coller seulement les valeurs sans la formule.
Merci a celui qui voudra m'aider.
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 27/04/2014 à 07:54
Bonjour

Essaies cette macro
Option Explicit
'----
Private Sub CommandButton1_Click()
Dim Nbre As Integer, Lig As Integer, Cptr as Integer
Dim Col As Byte
'initialisations
With Application
.ScreenUpdating = False
Nbre = .CountIf(Range("B16:B316"), "*")
End With
'recherche colonne vide sur ligne col B <>""
Lig = 15
For Cptr = 1 To Nbre
Lig = Columns("B").Find("*", Cells(Lig, "B"), xlValues).Row
For Col = 22 To 28 Step 2
If IsEmpty(Cells(Lig, Col)) Then
Cells(Lig, Col) = Cells(Lig, "B")
Exit For
End If
Next Col
Next Cptr
End Sub

Valable si ligne colonne B vide (estvide(B16)) et non résultat "" d'une formule

Mais tu n'as pas précisé ce que l'on faisait si les 4 colonnes de destination n'étaient pas vides...

Michel
0
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
27 avril 2014 à 10:55
Tout d abord je te remercie d 'avoir donner suite a mon projet
mais je me suis certainement mal expliqué

voila
j'ai donner un exemple sur b16 mais mais ca peut être n importe quel ligne dans la colonne b
de b16 a b316.

Si l'une des cellule dans la colonne b n'est pas vide; Récupère le résultat de la formule de b? et collé le dans la première colonne et sur la même ligne. et si la première colonne de destination n'est pas vide colle le résultat toujours dans la même ligne mais dans la deuxième
si de suite pour la troisième et la quatrième.

Nota:
dans la colonne b de b16 a b316 il y aura toujours 4 cellule non vide a copier en une seul action et a coller dans la même ligne de la colonne de destination.

Je te remercie pour ton aide Michel .
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
28 avril 2014 à 10:27
Apparemment, tu n'as pas cherché à comprendre la macro que je t'ai transmis
Je cherche bien que les cellules non vides dans B16 à B316 ce qui ,évite de boucler bêtement 310 fois ... :-(

Si l'une des cellule dans la colonne b n'est pas vide; Récupère le résultat de la formule de b? et collé le dans la première colonne et sur la même ligne. et si la première colonne de destination n'est pas vide colle le résultat toujours dans la même ligne mais dans la deuxième
si de suite pour la troisième et la quatrième.

C'est ce qui est fait !!! :- (

Ciao
0
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
29 avril 2014 à 10:59
bonjour Michel
je debute en VBA

La Macro me donne une erreur ne fonctionne pas

Peux tu le mettre dans un fichier excel comme exemple STP
Je comprendrais mieux son fonctionnement.
ca m'aiderais BCP. j'ai hate de le voir fonctionné et de le mettre dans mon projet

Cordialement
et un grand merci pour toute l' équipe comment ca marche .com
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 avril 2014 à 13:47
bonjour,

certainement pour t'amuser :-(( , tu me dis qu'il y a une erreur mais tu ne précises pas laquelle ni sur quelle ligne !!!!
décourageant...

La macro est identique à celle que j'avais proposé se trouve dans le module feuille1 de VBA car le bouton est un contrôle activeX
https://www.cjoint.com/?3DDnTxHi5sv
0
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
30 avril 2014 à 13:01
Bonjour
Michel
Si tu penses que je me permet de m'amuser alors que tu me viens en aide.
c'est tout a fais le contraire. j'ai BCP de respect pour des citoyen comme toi qui mettent leur savoir faire au service des autres.

via le fichier exemple j'ai réussi a intégrer la macro. et fonctionne très bien. Mais qu'avec des valeur alphanumérique ou textuel. quand je met que des nombre elle ne marche pas car la colonne de copie et les colonne collées, se sont que des valeur numérique. Et a chaque action il y aura que 4 valeurs a copier dans (colonne b) qui devront être ensuite effacées puis recommencer .
qui veut dire a chaque action il y aura toujours 312 cellules vide dans colonne b et 4 cellule non vide a copier.

je te remercie encore une fois Michel car ton aide m'est très précieux.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 avril 2014 à 16:12
dans la macro
remplacer
Nbre = .CountIf(.Range("B16:B316"), "*")
par
Nbre = .CountIf(.Range("B16:B316"), ">0")

si il y a des nombres négatifs mettre par ex
Nbre = .CountIf(.Range("B16:B316"), ">-9999")
0
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
1 mai 2014 à 17:35
Merci BCP Michel
Ta macro Marche très bien. Vraiment super
Je te remerci d'avoir compris des le départ ce que je voulais.
c'est moi étant débutant en VBA avais du mal a l'intregré dans mon tableau

J'ai même refais la même chose pour remplir les cases entre deux par des donnée
différentes.
Je suis vraiment satisfais

Un Grand salut a toute l'équipe comment ca marche et bonne continuation.
0
belfort-1 Messages postés 6 Date d'inscription samedi 26 avril 2014 Statut Membre Dernière intervention 2 mai 2014
2 mai 2014 à 15:02
bonjour
J'ai finalisé mon tableau
il me reste juste un petit détail a reglé
La colonne (b16:b316) de la feuil(VERIF-SCORE ) ou je dois faire la copie
est une colonne masqué.

(erreur dexécution'91':
variable objet ou objet variable de bloc with non definie)

Merci
et bonne jourée.
0