problème visual basic

  • Initiateur de la discussion Initiateur de la discussion djo24
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

djo24

Guest
Bonjour,

dans le cadre d'un de mes projets universitaire, je dois améliorer un tableau de données.
Dans ce tableau, figure notamment une colonne de référence. Certaines références sont en 12 caractères, et d'autres en 14 caractères. Parmis celle en 14 caractères, il arrive que certaines soient des combinaisons de références déjà énoncées sous forme de 12 caractères auquelles on a ajouté 2 derniers caractères.

J'ai donc essayer d'imaginer une macro qui repête automatiquement ces équivalence et qu'elle m'efface automatiquement la ligne de la référence à 12 digits.

Malheureusement, la fonction "gauche" qui repert un nombre précis de caractères dans une cellule n'est pas programmable de la même façon en visual basic.

Je laisse une version du programme :

For i = 4 To MaxNbline1

Cell1 = .Left(.Cells(i, 3), 12)

If IsEmpty(Cell1) Then
Exit Sub
End If

For j = i + 1 To MaxNbline1

Cell2 = .Left(.Cells(j, 3), 12)

If IsEmpty(Cell2) Then
Exit Sub
End If

If (Cell1 = Cell2) And (i <> j) Then

.Cells(i, 3) = .concatener(.Cells(i, 3), .Right(Cell2, 2))
.Cells(j, 2).Delete
.Cells(j, 3).Delete
.Cells(j, 4).Delete
.Cells(j, 5).Delete
.Cells(j, 6).Delete
.Cells(j, 7).Delete
.Cells(j, 8).Delete
.Cells(i, 9).Delete
.Cells(j, 10).Delete

End If

Next j

Next i


L'idéal c'est de trouver une forme programme de la fonction "gauche", "droite" et "concatener".

Merci de me répondre si vous avez une idée.

Cordialement,

Djo24
 
Re : problème visual basic

Bonjour Djo24, salut PierreJean,

Je pense que le code se situe à l'intérieur d'une boucle "With" puisque tu as mis des ".cells(...".

Il ne faut pas mettre de "." devant une instruction. Tu dois écrire:

Code:
Cell1 = Left(.Cells(i, 3), 12)

Pour le reste, ce srait mieux avec un exemple, mais corrige déjà ce point, l'instruction "Left" marche comme "Gauche" en formules.

@+

Gael
 
Re : problème visual basic

bonjour

peut être comme ceci !?
si effectivement tu es dans une boucle With
tu dois remettre les points devant les Cells() uniquement !

Code:
For I = 4 To MaxNbline1
Cell1 = Left(Cells(I, 3), 12): If IsEmpty(Cell1) Then Exit Sub

For J = I + 1 To MaxNbline1
Cell2 = Left(Cells(J, 3), 12): If IsEmpty(Cell2) Then Exit Sub

If Cell1 = Cell2 And I <> J Then
   Cells(I, 3) = Cells(I, 3) & Right(Cell2, 2)
   For C = 2 To 10: Cells(J, C).Delete: Next
End If
Next J: Next I
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
865
Réponses
15
Affichages
698
Réponses
8
Affichages
759
Réponses
0
Affichages
645
Réponses
2
Affichages
1 K
Retour