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 :

Passer à la colonne suivante [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut Passer à la colonne suivante
    Voilà j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Windows("analyses.xls").Activate
                If Range((nomCel + 1)& i).Value <> "" Then
                    Windows("analyses.xls").Activate
                    recupVal = Range((nomCel+1)& i).Value
                    Windows("exemple.xls").Activate
                    ActiveCell.Value = recupVal
                Else
                    Windows("analyses.xls").Activate
                    recupVar = Range(nomCel & i).Value
                    Windows("exemple.xls").Activate
                    ActiveCell.Value = recupVar
                End If
    J'aimerai qu'au niveau (nomCel + 1) passer à la colonne suivante... En fait dans mon code je parcours ma colonne N ... si au même endroit dans ma colonne O j'ai une valeur alors je prend cette valeur et la récupère en lieu et place de la valeur en colonne N...

    Si je ne suis pas claire merci de me poser des questions...

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 21
    Par défaut
    Salut,

    Si je comprends bien tu utilises deux colonne et le même nombre de lignes.
    Pourquoi ne pas utiliser un simple "for each".
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
     
    For Each Cel In Range(Cells(53, 1), Cells(63, 1)) ' 1 et 10 à modifier en fonction de la ligne de début et de fin
    Cel.Select
    ligne = ActiveCell.Row
    If Cel.Value = "" Then
    Cel.FormulaR1C1 = Cells(ligne, 2).Value 'modifie le "2" avec le numéro de la colonne cible
    ElseIf Cells(ligne, 2) = "" Then        'modifie le "2" avec le numéro de la colonne cible
    Cells(ligne, 2).FormulaR1C1 = Cel.Value 'modifie le "2" avec le numéro de la colonne cible
    End If
    Next Cel
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Je suis désolée je débute en vba et je ne comprend pas trop ton code... Je n'arrive pas à le transposer par rapport au mien ...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    C'est bon j'ai réussi ... Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    celSuivante = Range(nomCel & i).Column + 1
     
                If Cells(i, celSuivante).Value <> "" Then
                    Windows("analyses.xls").Activate
                    recupVal = Cells(i, celSuivante).Value
                    Windows("exemple.xls").Activate
                    ActiveCell.Value = recupVal
                Else
     
                    Windows("analyses.xls").Activate
                    recupVal = Range(nomCel & i).Value
                    Windows("exemple.xls").Activate
                    ActiveCell.Value = recupVal
                End If

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Il faut éviter dans la mesure du possible de travailler avec les ActiveCell et autres ActiveMachin.

    En supposant que tes 2 classeurs sont ouverts, ça donnerait un truc de ce genre
    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
    Sub test()
    Dim i As Long, DerL As Long
    Dim ShS As Worksheet, ShD As Worksheet
     
    'on définit la feuille source
    Set ShS = Workbooks("analyses.xls").Sheets("Feuil1")
     
    'on définit la feuille de destination
    Set ShD = Workbooks("exemple.xls").Sheets("Feuil1")
     
    'on cherche la dernière ligne de la colonne N de la feuille source
    DerL = ShS.Cells(Rows.Count, 14).End(xlUp).Row
     
    'on boucle sur toutes les lignes de la colonne N de la feuille source
    'de la ligne 1 à la dernière ligne
    For i = 1 To DerL
        If ShS.Cells(i, 15) <> "" Then '<-- si valeur dans la colonne O
            ShD.Cells(i, 1) = ShS.Cells(i, 15) '<-- transcription valeur colonne O dans le classeur de destination en colonne A
        Else
            ShD.Cells(i, 1) = ShS.Cells(i, 14) '<-- sinon transcription valeur colonne N
        End If
    Next i
     
    End Sub

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Ok, merci

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

Discussions similaires

  1. passer a la colonne suivante
    Par clairev dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/07/2009, 13h52
  2. Ajustement colonne suivant contenu
    Par en_stage dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/08/2006, 17h17
  3. Sous-Formulaire : Passer à l'enregistrement suivant
    Par snoopy69 dans le forum Access
    Réponses: 4
    Dernier message: 27/04/2006, 13h22
  4. Etat : comment passer à la page suivante
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 26/10/2005, 16h45
  5. [CR9]Masquer des données (colonnes) suivant valeur champ
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 05/09/2005, 09h43

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