IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche Copie et collage format spécial


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Recherche Copie et collage format spécial
    Bonjour à toutes et à tous

    Bon alors.. Je vous explique la situation.
    Je possède un tableau excel situé sur "Feuil1" qui dans mon exemple possède 3 colonnes.
    1. Date
    2. Taux
    3. Remplissage A


    La colonne Date est au format "Date", la colonne Taux au format "Pourcentage" et la colonne Remplissage au format "Standard".
    Je cherche à copier coller les données de "Feuil1" dans "Feuil2" selon un critère : ici Taux < 95%.

    Je vous joins le code et explique en dessous mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Explicit
     
    Sub main()
        Dim f1 As Worksheet
        Dim i As Integer
        Dim Lig As Long
     
        Set f1 = Worksheets("Feuil1")
        Lig = 2 'première ligne à vérifier
        Do While Not IsEmpty(Range("A" & Lig))
            Lig = Lig + 1
        Loop
     
        For i = 2 To (Lig - 1)
            If Range("J" & i) < 0.95 Then
                f1.Activate
                ActiveSheet.Range("A" & i).Copy
                Sheets("Feuil3").Range("A" & i).PasteSpecial Paste:=xlPasteValues, operation:=xlNone
            End If
        Next
    End Sub
    N'ayant que peu de connaissances en VBA mais quelques restes en programmation, j'y suis allé par étape.
    1. J'ai validé ma première boucle qui me permet de connaître le nombre de lignes de mon tableau -> pas de problèmes
    2. J'ai ensuite vérifié le parcours de ma seconde boucle. Toutes les valeurs sont parcourues -> pas de problèmes
    3. Les premiers problèmes arrivent ! : La comparaison direct avec une cellule au format "Pourcentage" de fonctionne pas. Je suis obligé de modifier ce dernier. Comment faire pour l'éviter ? La condition au format "Nombre" (0.95 par exemple) fonctionne bien.
    4. Ensuite :Erreur lors de la recopie des dates. Je crois avoir lu un sujet sur le forum la dessus, je vais me pencher dessus demain.
    5. Enfin ! :J'ai beaucoup de mal à copier mes lignes. Je souhaite pouvoir la recopier quelque soit sa taille et remplir "Feuil2" au fur et à mesure. J'ai trouvé pas mal de sujet mais impossible de me dépatouiller avec ça...


    Je précise que mon véritable tableau est beaucoup plus important et dynamique (on verra pour ça plus tard).
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    salut,

    voici une proposition de code pour faire ce que tu veux.

    il s'adaptera à la taille de ton tableau sans manipulation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Option Explicit
    Type info
        date_info As Date
        Taux As Single
        Remplissage As Integer
    End Type
     
    Sub main()
        Dim bon() As info   'ceci est une variable de type tableau avec 3 "colonnes" cf le type défini an dessus
        Dim ligne As Integer 'utilisée pour définir la ligne à trairer dans la feuil1
        Dim Cpt As Integer   'utilisée pour "vider" la variable bon dans la feuil2
     
        'Défini la premièr ligne de la feuil1 à traiter
        ligne = 2
        Cpt = 2
        'on parcourt la liste de la feuil1
        Do Until Feuil1.Cells(ligne, 1).Value = ""
            If Feuil1.Cells(ligne, 2).Value < 0.95 Then
                ReDim Preserve bon(Cpt)
                bon(Cpt).date_info = Feuil1.Cells(ligne, 1).Value
                bon(Cpt).Taux = Feuil1.Cells(ligne, 2).Value
                bon(Cpt).Remplissage = Feuil1.Cells(ligne, 3).Value
                Cpt = Cpt + 1
            End If
            ligne = ligne + 1
        Loop
        'insertion des données dans la feuil2
        For Cpt = 2 To UBound(bon)
            Feuil2.Cells(Cpt, 1).Value = bon(Cpt).date_info
            Feuil2.Cells(Cpt, 2).Value = bon(Cpt).Taux
            Feuil2.Cells(Cpt, 3).Value = bon(Cpt).Remplissage
     
        Next
     
    End Sub
    n espérant que c'est bien ce que tu veux.
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Re !

    C'est exactement cela à une exception prêt.
    Si j'ai bien compris déjà, ta variable "bon" de type "info" ne te sert uniquement comme tampon le temps de copier les variables ?

    Le seul problème est avec la copie du pourcentage. En effet, pour les cellules de la première colonne, le format date est pris automatiquement sur la "Feuil2". Par contre, le format des cellules de la deuxième colonne sur la "Feuil2" passe en "Standard" et non en pourcentage.

    Comment faire sachant que tu n'utilises pas une Copie mais une affectation de valeur à une cellule ?

    Merci !

Discussions similaires

  1. Recherche un logiciel pour formater correctement ma clé USB
    Par Tsimplice dans le forum Périphériques
    Réponses: 2
    Dernier message: 11/11/2006, 17h43
  2. [Regexp] Recherche dans un texte formaté html
    Par YavaDeus dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 09/02/2006, 17h46
  3. Recherche de documentation sur format jpg
    Par LinkII dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 16/07/2005, 10h47
  4. [ Access 2003 ] => NuméroAuto de format spécial ?
    Par MaTHieU_ dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2005, 00h25
  5. [JFormattedTextField]Format spécial
    Par eraim dans le forum Composants
    Réponses: 13
    Dernier message: 22/04/2004, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo