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 :

Problème de boucle [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut Problème de boucle
    Bonjour le forum,

    Je n'arrive pas à voir mon problème de boucle ci-dessous...

    Je voudrais remplacer les initiales de chaque cellule par des mots en entier, mais ma boucle ne veut pas fonctionner pourtant je ne vois pas de problème de logique...

    Pourriez vous m'aider svp??

    vous trouverez le ficheir ci-joint

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Sub toto()
     
    Dim epinof As Workbook
    Dim epinofsheet As Worksheet
     
    'Workbooks.Open ("......\EPINOF07.xlsx"), local:=True
    Set epinof = Workbooks("EPINOF07.xlsx")
    Set epinofsheet = epinof.Worksheets("EPINOF07")
    epinofsheet.Activate
    nb = Range("A" & Rows.Count).End(xlUp).Row
     
    'le nombre de lignes
     
    'remplacement des initials
     
    Dim i As Integer
     
    For i = 2 To nb
     
    If Cells(i, 2) = "C" Then
            ActiveCell.Select
            Selection.Replace What:="C", Replacement:="Chiffre d'affaires", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            i = i + 1
     
    ElseIf Cells(i, 2) = "N" Then
            ActiveCell.Select
            Selection.Replace What:="N", Replacement:="Mouvement", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            i = i + 1
     
    ElseIf Cells(i, 2) = "D" Then
            ActiveCell.Select
            Selection.Replace What:="D", Replacement:="Demi-différence", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            i = i + 1
     
    ElseIf Cells(i, 2) = "P" Then
            ActiveCell.Select
            Selection.Replace What:="P", Replacement:="Périodique", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            i = i + 1
     
    End If
    Next i
     
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut bonjour,
    pourquoi faire un replace?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set r = Range("A1").CurrentRegion
    For i = 2 To r.Rows.Count
       Select Case UCase(r(i, 2))
                Case   "C"
                      r(i, 2) ="Chiffre d'affaires"
                Case "N"
                      r(i, 2) = "Mouvement"
       End Select
    Next

  3. #3
    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,

    Il y a plusieurs erreurs dans ton code :

    1. tu utilises "Activecell" sans avoir sélecté une cellule; donc tu utilises n'importe quelle cellule.
    2. tu incrémentes "i", ce que la boucle fait automatiquement.

    Les tests doivent se présenter ainsi (je n'ai modifié que le premier) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Cells(i, 2) = "C" Then
            Cells(i, 2).Replace What:="C", Replacement:="Chiffre d'affaires", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    ElseIf Cells(i, 2) = "N" Then
    etc.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Daniel,
    dans son fichier il n'y a que les lettres C,D,N,P le replace est inutile!

  5. #5
    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,

    Ah ? Je n'ai pas eu la curiosité de regarder !

  6. #6
    Invité
    Invité(e)
    Par défaut
    si il faut faire un replace faisons le sur la colonne!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Columns("B:B").Replace What:="N", Replacement:="TOTO", LookAt:=xlWhole, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False

  7. #7
    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
    Tu vas trop vite, tu as affaire à quelqu'un qui écris :


  8. #8
    Invité
    Invité(e)
    Par défaut
    effectivement, désolé, je «suis» le file de mes pensées!

  9. #9
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Il y a plusieurs erreurs dans ton code :

    1. tu utilises "Activecell" sans avoir sélecté une cellule; donc tu utilises n'importe quelle cellule.
    2. tu incrémentes "i", ce que la boucle fait automatiquement.

    Les tests doivent se présenter ainsi (je n'ai modifié que le premier) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Cells(i, 2) = "C" Then
            Cells(i, 2).Replace What:="C", Replacement:="Chiffre d'affaires", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    ElseIf Cells(i, 2) = "N" Then
    etc.
    Bonjour Daniel,

    Merci pour ta correction, c'est super clair, et j'ai pu résoudre mon problème grâce à toi!!

    D'ailleurs, même si je comprends bien que mon code est loin d'être le plus simple et efficace, ça m'aide beaucoup qu'on me corrige sur le code déja écrit au lieu de me proposer un autre code différent, donc un grand merci!!

  10. #10
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    pourquoi faire un replace?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set r = Range("A1").CurrentRegion
    For i = 2 To r.Rows.Count
       Select Case UCase(r(i, 2))
                Case   "C"
                      r(i, 2) ="Chiffre d'affaires"
                Case "N"
                      r(i, 2) = "Mouvement"
       End Select
    Next
    Bonjour,

    Merci pour ta réponse, je vais le garder pour mon apprentissage
    en ce qui concerne le remplacement des lettres, je sais bien qu'il n'y pas tout, mais les lettres à remplacer changent à chaque fois, donc ne t'inquiète pas.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Tu vas trop vite, tu as affaire à quelqu'un qui écris :

    tu avais vraiment raison!

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

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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