Incrémentation avec changement de colonne avec conditions

Messages postés
13
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
17 novembre 2006
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour j'ai un petit problème d'execution après compilation.L'erreur dans mon code se situe au niveau de ma premiere condition sur un "Range", le message d'erreur etant le suivant:
Erreur d'execution 1004 : la methode 'Range' de l'objet'_Global' a échoué
Je mes mon code ci-dessous merci d'avance

Sub Suivi_contestation()
Dim prem As String
Dim deux As String
Dim trois As String
Dim var1 As Integer
Dim var2 As Integer
Dim var3 As Integer



prem = "F"
deux = "G"
trois = "I"
var1 = Asc(prem)
var2 = Asc(deux)
var3 = Asc(trois)




ET3:
 i = 5
Do Until Range("A" & i).Value = ""




   If Range(prem & i).Value = "" Then
   Range("D" & i).Value = "Attente envoi du courrier au CEA"
   GoTo ET1
   Else
   If Range(deux & i).Value = "" Then
   Range("D" & i).Value = "Attente réponse CEA"
   GoTo ET1
   Else
   If Range(trois & i).Value = "OK" Then
   Range("D" & i).Value = "Imputation modifiée"
   GoTo ET1
   Else
   If Range(trois & i).Value = "" Then
   Range("D" & i).Value = "Remplir la cellule réponse MOE"
   GoTo ET1
   Else
   If Range(trois & i).Value = "KO" Then
   GoTo ET2
   End If
   End If
   End If
   End If
   End If
ET1:
i = i + 1
Loop
ET2:
var1 = Asc(prem) + 4
prem = Chr(var1)
var2 = Asc(deux) + 4
deux = Chr(var2)
var3 = Asc(trois) + 4
trois = Chr(var3)
GoTo ET3
End Sub

6 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

C'est pas très clair tout ca... Qu est ce que doit faire exactement ton bout de code?

NB:
- Les Goto ET1 sont inutiles me semble t il
- Goto ET2 peut etre remplacer par Exit Do
- Cette fonction ne se termine Jamais me semble t il

@+,   Ju£i?n
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Si la fonction s'arrête dès que la cellule A... est vide !

Sinon, astuce pour tes If, qui sont très mal présenté :

If Range(prem & i).Value = "" Then
Range("D" & i).Value = "Attente envoi du courrier au CEA"
GoTo ET1
Else
If Range(deux & i).Value = "" Then
Range("D" & i).Value = "Attente réponse CEA"
GoTo ET1
Else
if Range(trois & i).Value = "OK" Then
Range("D" & i).Value = "Imputation modifiée"
GoTo ET1
Else
If Range(trois & i).Value = "" Then
Range("D" & i).Value = "Remplir la cellule réponse MOE"
GoTo ET1
Else
If Range(trois & i).Value = "KO" Then
GoTo ET2
End If
End If
End If
End If
End If

Ensuite pour ton problème :

If Range(prem & i).Value = "" FAUX !!!!!!!!
D'après la catégorie, tu n'est pas en VBA mais VB6 ! Il faut donc faire un Set de l'appli Excel

@++
Messages postés
13
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
17 novembre 2006

En fait ce code sert à indiquer l'etat d'avancement de courrier concernant des contestations sur l'imputation de problème sur un chantier. Il faut en fait  indiquer l'etat d'avancement quand les dates de courrier sont introduites dans les cellules, le nombre d'aller-retour du courrier n'etant pas defini a l avance. Quand à ce qui m'est dit precedemment VBA ou VB6,... je suis debutant et je ne fais pas trop la difference alors quand à savoir si j utilise l'un ou l'autre...
@+ 
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Pour VB6 ou VBA: Développe tu directement avec le VB d'Excel (VBA) ou bien a l'aide de Microsoft Visual Basic 6

> mortalino: (salut) If Range(prem & i).Value = ""    FAUX !!!!!!!! pourquoi est ce faux????

@+,   Ju£i?n
Messages postés
13
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
17 novembre 2006

En fait j utilise VBA .... et j'ai réussi à le faire marcher mais merci quand même
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut Julien, 


j'ai mis Faux car il était dans la catégorie VB6.
en vb6, ça donne ça :

If xlSheet.Range(prem & i).Value = ""

Bien entendu, après avoir référencé l'appli, le classeur et la feuille.

Certe, ce fût un détail comme ça en passant, mais qui à son importance.
Mais bon, s'il est en VBA, il n'y as pas de problèmes

@++





<hr width="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>