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

Résolu
belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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.

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    3. belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  2. belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  3. belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. belfort-1 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    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