des conditions dans une condition

kikouyou

XLDnaute Junior
bonjour tt le monde,

je joins un petit fichier sur un pb de condition dans une condition ;)

ca peut paraitre simple mais pour moi pas tant que ca....

l'explication est dans le fichier

merci d'avance pour votre collaboration amis dvpeur
 

Pièces jointes

  • Classeur1.xls
    29.5 KB · Affichages: 61
  • Classeur1.xls
    29.5 KB · Affichages: 61
  • Classeur1.xls
    29.5 KB · Affichages: 65

nolich

XLDnaute Occasionnel
Re : des conditions dans une condition

Bonjour kikouyou, bonjour à toutes et à tous :)

Je te laisse tester ce code :

Code:
Sub popo()

  Range("j1").Select

  While ActiveCell.Value <> ""
    
    With ActiveCell
      If .Value = "X:D" Then
      
        .Offset(, -5).Copy .Offset(0, -4)
                 
      ElseIf .Value = "X:X" Then
      
        .Offset(, -5).Copy .Offset(, -4)
        
      ElseIf .Value = "AX:X" Then
      
        If .Offset(, -5) = 0 Then
          .Offset(0, -5) = .Offset(0, -4)
        Else
          .Offset(0, -4) = .Offset(0, -5)
        End If
        
      End If
      
    End With
    
    ActiveCell.Offset(1, 0).Activate
    
  Wend
  
End Sub

@+
 

kikouyou

XLDnaute Junior
Re : des conditions dans une condition

merci Lio c cool pour ta réponse.

par contre je me suis un poil trompé dans l'énoncé en fait c :

Je souhaiterai que ma macro lors quelle détecte ax:x, elle aille tester le contenu de e1 si =0 alors elle va copier la valeur en f1 pour la coller en e1
sinon si e1 <> 0 alors elle copie e1 dans la case f1

je c po si c tres clair.... :p

en gros si il y a AX:X et 0 dans e1 il faut prendre la valeur en f1 et la mettre en e1.

par contre si e1 est diffèrent de 0 alors il faut copier e1 en f1.

est ce que je peux te demander de mettre des petits commentaires ligne par ligne car je ne comprends pas tt le code.

Je suis embêtant mais moi je fais comme ca pour progresser...et me souvenir des fctions

au plaisir de vous lire

tks
 

nolich

XLDnaute Occasionnel
Re : des conditions dans une condition

Re kikouyou, bonsoir à toutes et à tous :)

J'ai testé mon code sur ton fichier et il ne fonctionne pas. En fait, j'aimerais savoir comment sont générés les nombres qui sont dans tes colonnes B à I.

J'ai testé avec du texte mais ça ne fonctionne pas non plus :confused:

A te lire,

@+
 

kikouyou

XLDnaute Junior
Re : des conditions dans une condition

salut lio et tt les dvpeurs,

en fait ces résultats sont issus d'un logiciel. Ces lignes de résultats et les cellules dans lesquelles les résultats apparaissent en fonction de la fonction utilisé dans le logiciel. Naturellement les résultats varient d'un échantillon à l'autre aucune des valeurs n'est fixe tout est saisi par l'opérateur.

Le seul moyen que j'ai trouvé c'est de tester de la façon évoquée.

Tu imagines que je t'ai donné qu'un bout de la macro car mais si elle est courte, elle est très dense.


Je galère dessus mais faut que je trouve car cela représente un gain de fiabilité du traitement de données.


merci bonne journée à toi
 

nolich

XLDnaute Occasionnel
Re : des conditions dans une condition

Re,

Non, ce n'est pas mission impossible, mais j'ai eu pas mal de travail. Apparemment, tes chiffres sont séparés par un point et chez moi, ça ne passe pas, je veux dire qu'il faut coder une modification, mais avant de le faire, j'aimerais savoir quelle est le caractère utilisé chez toi comme séparateur décimal (un point ou une virgule ?).

@+
 

Raja

XLDnaute Accro
Re : des conditions dans une condition

Bonsoir, Salut nolich,

Veux-tu essayer ce code suivant :

Code:
Sub popo()
  For Each cel In Range("J1:J" & [J65536].End(xlUp).Row)
      If (cel = "AX:X") Then
        If (Val(cel.Offset(0, -5)) <> 0) Then
          cel.Offset(0, -4) = cel.Offset(0, -5)
        Else
          cel.Offset(0, -5) = cel.Offset(0, -4)
        End If
      End If
  Next
End Sub
 
Dernière édition:

nolich

XLDnaute Occasionnel
Re : des conditions dans une condition

Re, bonsoir à toutes et à tous :)

EDIT2 : Code supprimé because erreur :confused:, et suppression de pièce jointe.

Voilà. J'ai vu que Raja, que je salue au passage, t'as proposé une autre solution à base de For Each ... mais je n'ai pas voulu t'embrouiller et je suis parti sur des choses que tu savais faire :

Range("J1").Select
et
ActiveCell.Offset(,1).Activate

@+

EDIT : Ceci dit, le For Each de Raja est plus rapide dans le traitement des données car il évite des sélections de cellules qui ralentissent le code.
 
Dernière édition:

nolich

XLDnaute Occasionnel
Re : des conditions dans une condition

Bonjour kikouyou et Raja, bonjour à toutes et à tous :)

kikouyou, essaie la procédure contenu dans le fichier joint et tiens-nous au courant.

En fait, il y avait des espaces dans tes nombres et cela perturbait la conversion. Chez moi, ça fonctionne ainsi (XL 2003).

@+
 

Pièces jointes

  • Classeur de Kikouyou.xls
    32.5 KB · Affichages: 51

kikouyou

XLDnaute Junior
Re : des conditions dans une condition

salut lio et raja,


merci pour votre investissement perso sur le sujet. vos propositions fonctionnent et en plus suivant deux écritures différentes ce qui me permet d'avoir deux styles différents et de les comparer.

Je vous remercie d'avoir de votre temps pr m'aider sur ce problème. Maintenant c'est à mon tour de bien comprendre les codes et de les appliquer judicieusement.

au plaisir d'échanger à vous


fabrice
 

nolich

XLDnaute Occasionnel
Re : des conditions dans une condition

Re Fabrice et Raja, bonsoir à toutes et à tous :)

Fabrice, tu vas pouvoir prendre connaissance d'une autre manière de procéder à base de tableau. Je t'ai envoyé en MP une procédure destinée à extraire les codes des références de la ligne A pour les placer en colonne J :)

Code:
[COLOR="Blue"]Sub[/COLOR] TraitementCodes_En_J()
[COLOR="Green"]'[/COLOR]
[COLOR="blue"]Dim[/COLOR] LastRow [COLOR="blue"]As Long[/COLOR], i [COLOR="blue"]As Long[/COLOR]
[COLOR="blue"]Dim[/COLOR] C [COLOR="blue"]As[/COLOR] Range
[COLOR="blue"]Dim[/COLOR] Codes
[COLOR="green"]'[/COLOR]
  
  [COLOR="green"]' On détermine la dernière ligne du fichier[/COLOR]
  LastRow = Range("A65536").End(xlUp).Row
  
[COLOR="green"]  ' On dimensionne le tableau qui accueillera
  ' les code (NbLignes, 1 colonne)[/COLOR]
  [COLOR="blue"]ReDim[/COLOR] Codes(1 [COLOR="blue"]To[/COLOR] LastRow, 1 [COLOR="blue"]To[/COLOR] 1)
  
[COLOR="green"]  ' On met le compteur à 1[/COLOR]
  i = 1
  
[COLOR="green"]  ' puis, pour chaque cellule de la colonne A[/COLOR]
  [COLOR="blue"]For Each[/COLOR] C [COLOR="blue"]In[/COLOR] Range("A1:A" & LastRow)
  
[COLOR="green"]    ' On cherche où se trouve les premiers ":" dans la
    ' cellule en cours de traitement InStr(1, C, ":").
    ' On soustrait 2 de cette position pour obtenir le
    ' premier code à 2 lettres avant ces deux points.
    ' Ensuite, on extrait 5 caractères à partir de la
    ' position précédemment calculée :
    ' Mid(C, Position calculée, 5).
    ' Sur ton fichier, j'ai j'ai remarqué que les codes
    ' placés en J sont de la forme "NN:N" ou "NN:NN",
    ' voilà pourquoi j'extrais 5 caractères desquels
    ' j'enlève les espaces superflus : Trim(Chaîne).
    ' Enfin, on les place dans le tableau en "ligne"
    ' [B][I]i[/I][/B] colonne 1[/COLOR]
    Codes(i, 1) = Trim(Mid(C, InStr(1, C, ":") - 2, 5))
    
[COLOR="green"]    ' on incrémente i pour passer à la "ligne" suivante[/COLOR]
    i = i + 1
    
[COLOR="green"]  ' Et on passe à la prochaine cellule de la colonne A[/COLOR]
  [COLOR="blue"]Next[/COLOR] C
  
[COLOR="green"]  ' Et pour terminer, on place tous ces codes en une
  ' seule fois en colonne J[/COLOR]
  Range("J1:J" & LastRow) = Codes
  
[COLOR="blue"]End Sub[/COLOR]

En espérant avoir devancé ta prochaine question ;) :)

@+
 

Statistiques des forums

Discussions
312 440
Messages
2 088 450
Membres
103 853
dernier inscrit
roukhou