Bonjour à vous !
Je viens vous soumettre ici un probème à propos d’un code assez court et simple, mais dont les résultats me dépassent complétement.
Je souhaite compléter les quelques cellules vides éventuelles d’une plage de cellules, grâce aux données mises à disposition dans une autre feuille. Ces dernières données disponibles sont simplement listées sur une ligne.
J’ai composé mon code comme suit plus loin, et il se produit un résultat qui, selon l’une des deux versions :
-
soit ne me satisfait pas car je ne trouve pas une récupération des données de remplacement une par une comme souhaitée, car certaines données de remplacement sont “sautées” du fait de l’incrémentation de la variable “o” qui m’est “imposée” dans la partie “Else” pour une raison que je ne comprends vraiment pas. Bref, la macro veut bien tourner à cette seule dernière condition, mais elle me produit un résultat non satisfaisant.
-
soit la macro ne veut pas du tout fonctionner et m’affiche le message suivant après lancement : "Erreur exécussion ‘1004’ : Erreur définie par l’application ou par l’objet’. Et à la validation pour débogage, c’est alors la ligne suivante que je trouve surlignée en jaune (alors qu’elle ne semblait pas du tout poser probème précédemment. Je pense qu’effectivement, ce n’est en fait pas cette ligne qui pose probème, mais je n’ai aucune idée de ce qui peut constituer le point de blocage…) :
Cell.Offset(0, 0).Value = Worksheets(“Random”).Cells(1, o).Value
Donc,
→ La première version du code - qui “accepte” de tourner mais ne me donne pas un résultat satisfaisant - se présente comme suit :
Sub rempl()
'
'
Dim o As Integer
' Ces deux variables suivantes ne sont que des variables destinées à un comptage de contrôle
Dim comptVide As Integer
Dim comptePlein As Integer
'
o = 0
comptVide = 0
comptPlein = 0
'
Sheets("Feuille A").Select
For Each Cell In Range("B7:Q10")
If Cell.Value = "" Then
Cell.Offset(0, 0).Value = Worksheets("Feuille B").Cells(1, o).Value
o = o + 1
comptVide = comptVide + 1
Else
' C'est cette incrémentation de la variable "o" qui ne me convient pas et vient perturber le résultat attendu.
o = o + 1
comptPlein = comptPlein + 1
End If
Next Cell
Range("AY22").Value = comptVide
Range("AY23").Value = comptPlein
End Sub
→ La seconde version du code, qui me paraît pourtant sensée - et qui devrait tourner, cela sans que je sois “obligé” d’incrémenter dans la partie “Else” la variable “o” qui vient donc pertuber le résultat final attendu - et qui ne veut donc pas tourner ("“Erreur exécussion ‘1004’…”) :
Sub rempl()
'
'
Dim o As Integer
Dim comptVide As Integer
Dim comptePlein As Integer
'
o = 0
comptVide = 0
comptPlein = 0
'
Sheets("Feuille A").Select
For Each Cell In Range("B7:Q10")
If Cell.Value = "" Then
' La macro refuse de tourner, affiche son message d'erreur, et c'est cette ligne suivante que je retrouve surlignée :
Cell.Offset(0, 0).Value = Worksheets("Feuille B").Cells(1, o).Value
o = o + 1
comptVide = comptVide + 1
Else
' o = o + 1
comptPlein = comptPlein + 1
End If
Next Cell
Range("AY22").Value = comptVide
Range("AY23").Value = comptPlein
End Sub
Alors, vraiment, s’il y a parmi vous une personne qui sait m’expiquer le pourquoi du comment de ce qui m’apparaît - pauvre néophythe que je suis - véritablement abérant, et bien je vous serez vraiment reconnaissant.
Bonne journée à vous !