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 :

Ecrire sur une ligne en fonction d'une autre [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut Ecrire sur une ligne en fonction d'une autre
    Bonjour,
    J'aimerais pouvoir réaliser une macro qui écrit quelque chose sur une ligne d'une colonne en fonction d'une autre colonne mais de la même ligne.

    Exemple:

        AH                AI
    Etanchéité      DE-VEC
    Affichage        DE-VES
    Sièges           DE-VDS
    Sachant que j'ai que la colonne de AH, et que je dois "écrire" via la macro les DE... J'aimerais faire un truc du genre :
    Si étanchéité dans AH, écrit DE-VEC dans AI (sur la même ligne)

    J'espère que c'est assez clair..
    Quelqu'un aurait une idée ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Coupe()
    Dim C As Range, Pos As Integer
    For Each C In Range("AH1", Cells(Rows.Count, "AH").End(xlUp))
        Pos = InStr(1, C.Value, " DE-") + 1
        C.Offset(, 1).Value = Mid(C.Value, Pos, 9 ^ 9)
    Next C
    End Sub
    Voici le code commenté. Si tu as d'autres questions n'hésite pas. Si le code produit un résultat différent, donne un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Coupe()
    Dim C As Range, Pos As Integer
    'C représente chaque cellule de la colonne AH
    'boucle sur les cellules de AH
    For Each C In Range("AH1", Cells(Rows.Count, "AH").End(xlUp))
        'on cherche la position de " DE-" et on ajoute 1 (premier caractère de la chaîne à copier
        Pos = InStr(1, C.Value, " DE-") + 1
        'et on copie la partie à droite dans la cellule correspondante de AI
        'Offset fait un décalage à droite
        '9^9 représente un grand nombre suffisant pour tout copier
        C.Offset(, 1).Value = Mid(C.Value, Pos, 9 ^ 9)
    Next C
    End Sub

  3. #3
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut
    Merci beaucoup pour les commentaires, ils m'ont bien aidé à comprendre le code !

    Je ne comprends pas pourquoi on cherche la position de "DE-" parce que il est censé ne pas être écrit avant de faire tourner la macro.
    On ne peut donc pas le chercher si il n'y est pas ?

    PS: En faisant tourner ton code, il me fait toujours un copier coller de la colonne AH dans la colonne AI.

  4. #4
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Bonjour,
    Est ce que ce code correspond mieux à tes souhaits?
    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
    Sub Coupe()
    Dim C As Range, i As Integer
    Dim Der As Integer
    With ThisWorkbook.ActiveSheet
    Der = .Cells(.Rows.Count, 34).End(xlUp).Row
    End With
    For i = 1 To Der
     If Range("AH" & i) Like "*Etanchéité*" Then
        Range("AI" & i) = "DE-VEC"
     End If
     
      If Range("AH" & i) Like "*Affichage*" Then
        Range("AI" & i) = "DE-VES"
     End If
     
      If Range("AH" & i) Like "*Sièges*" Then
        Range("AI" & i) = "DE-VDS"
     End If
    Next i
    End Sub
    Eric

  5. #5
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut
    C'est exactement ça Eric ! Merci à toi !
    Merci à toi aussi Daniel

  6. #6
    Membre régulier Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Points : 89
    Points
    89
    Par défaut
    Bonjour !
    Voici mon code pour ceux qui le souhaite :

    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
            Dim C As Range, i As Integer
            Dim Der As Long
     
            Windows("ListeQuotidienne_LUP_QC.xls").Activate
            Sheets("RQT_TDB_DELAI_2013").Select
    Der = Range("A1").CurrentRegion.Rows.Count
    For i = 1 To Der
        gsfa = Cells(i, 34).Value
        Select Case gsfa
     
                'DE-VEC
            Case "GSFA-V03-", "GSFA-V04-", "GSFA-V05-", "GSFA-V09", "GSFA-V06-"
                Range("AI" & i) = "DE-VEC"
     
                'DE-VES
            Case "GSFA-V12-", "GSFA-V12-", "GSFA-V15-"
                Range("AI" & i) = "DE-VES"
     
                'DE-VDL
            Case "GSFA-V08-"
                Range("AI" & i) = "DE-VDL"
     
                'DE-VDS
            Case "GSFA-V14-SIEGES"
                Range("AI" & i) = "DE-VDS"
     
                'DE-VDM
            Case "GSFA-V07-", "GSFA-V13-", "GSFA-V10- "
                Range("AI" & i) = "DE-VDM"
        End Select
     
    Next i

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] copier coller une cellule sur une ligne en fonction d'une valeur
    Par armina1978 dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2014, 09h43
  2. Réponses: 6
    Dernier message: 24/05/2012, 11h53
  3. Ecrire sur le i ème caractère d'une ligne d'un fichier texte
    Par Krovax dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 01/12/2009, 23h00
  4. Réponses: 11
    Dernier message: 10/03/2007, 02h01
  5. Recherche une ligne en fonction d'une date
    Par c+cool dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/09/2006, 15h30

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